博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一些被忽视的 PHP 函数(整理)
阅读量:3646 次
发布时间:2019-05-21

本文共 2694 字,大约阅读时间需要 8 分钟。

来自:

真的是不用不知道,其实我们熟悉的 PHP 还有很多好东西没有发掘。  ,当时就泪奔了好几回,重点推荐下,顺便我自己也做个整理。

sys_getloadavg()

 返回当前  (当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。

80) { header('HTTP/1.1 503 Too busy, try again later'); die('Server too busy. Please try again later.');}

PS,如果「很不幸」得你的 PHP 环境中没有这个函数,可以考虑使用下面这段代码 

if (!function_exists('sys_getloadavg')) {    function sys_getloadavg()    {        $loadavg_file = '/proc/loadavg';        if (file_exists($loadavg_file)) {            return explode(chr(32),file_get_contents($loadavg_file));        }        return array(0,0,0);    }}

这一特性如果使用得当,能减轻服务器部分压力。

pack()

 对应的还有个函数为  ,用于压缩二进制串,文中的作者的示例非常清楚

$pass_hash = pack("H*", md5("my-password"));

如果你使用 PHP5,那么可以直接这样子

$pass_hash = md5("my-password", true); // PHP 5+

这样做的好处之一是能减少串存储空间(能节省多少呢?可能又会是另篇文章了)。

这里还有个示例代码可以 pack 数组 

cal_days_in_month()

 可以直接返回指定月份中的天数,例如

$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31

我敢保证,  :^)

_()

呃,  (也有可能是最短的 PHP 内置函数)。_() 是它的「小名」,它的大名是 gettext()

写过 Wordpress 皮肤的朋友会了解 __() 以及 _e() 这些函数,其实 PHP 早已经自带了相关的功能。

// Set language to Germansetlocale(LC_ALL, 'de_DE'); // Specify location of translation tablesbindtextdomain("myPHPApp", "./locale"); // Choose domaintextdomain("myPHPApp"); echo _("Have a nice day");

利用  可以编写多语言的应用,现在您感兴趣的可能就是如何编写 locale 文件,这但已经不是此文涉及的重点,  。

get_browser()

坦白讲,见到  我当时就彻底泪奔。有了这个函数,再也不用自己去分析 $_SERVER['HTTP_USER_AGENT'] 这个字符串了。

更多的信息可以参考这里。在使用此函数前,  ,相信你可以搞定的。

debug_print_backtrace()

以前查看函数调用堆栈,我会使用  等的扩展,其实 PHP5 版本以后已经  。

 ,如果你记不住这个函数的名字,可以用这段代码同样能达到目的(看起来还是记住那个函数靠谱):

getTraceAsString()));

natsort()

这个函数用于  ,这个大家可能都要用到。贴下相关的文档链接以及示例代码

$items = array("100 apples", "5 apples", "110 apples", "55 apples"); // normal sorting:sort($items);print_r($items);    # Outputs:    # Array    # (    #     [0] => 100 apples    #     [1] => 110 apples    #     [2] => 5 apples    #     [3] => 55 apples    # )natsort($items);print_r($items);    # Outputs:    # Array    # (    #     [2] => 5 apples    #     [3] => 55 apples    #     [0] => 100 apples    #     [1] => 110 apples    # )

有关自然排序的算法规则,可以  。

glob()

这个  同样让人感到泪奔,先不说功能直接上示例代码

foreach (glob("*.php") as $file) {    echo "$file\n";}

相比你已经了解该函数的用途了,那么我们就可以有更多的「玩法」,例如就显示目录(  ):

$dirs = array_filter(glob($path.'*'), 'is_dir');

当然,文件递归你也可以  。

补充 by  :

glob 有个参数选项 GLOB_ONLYDIR 就可以只列目录

PHP Filter

如果你还在正则验证字符串,那么就真的「Out」了。自 PHP5.2 版本以后,  用于专门验证 电子邮件、URL 等是否合法,示例代码:

var_dump(filter_var('bob@example.com', FILTER_VALIDATE_EMAIL));

由于是新生的模块,因此还有很多的陷阱,例如

filter_var('abc', FILTER_VALIDATE_BOOLEAN); // bool(false)filter_var('0', FILTER_VALIDATE_BOOLEAN);   // bool(false)

但这不影响我们去尝试。有关 PHP Filter 的更多信息,相信能拎出来另外写篇文章了。

-- Split --

最后,感叹 PHP 其实是个历久弥新的工具,不小心我们就会悲剧性得重复造了只轮子。因此,时常看看 PHP 文档每次都会有新的收获。

转载地址:http://femyn.baihongyu.com/

你可能感兴趣的文章
疏漏总结(十)
查看>>
线程池
查看>>
servlet的其他作用,git的使用方法
查看>>
Oracle数据库sql*plus常用命令
查看>>
Oracle中表的简单查询
查看>>
Linux-进程管理
查看>>
Linux-ssh服务及服务管理、文件传输
查看>>
Linux-网络配置
查看>>
开发中浏览器兼容的问题总结
查看>>
Vue初体验
查看>>
Vue学习之二(vue指令)
查看>>
人力资源项目-角色模块
查看>>
Matrixport首席执行官葛越晟:区块链市场具有充足的流动性及高溢价
查看>>
量子链创始人帅初:平台和应用需要具备区块链特征,但不一定需要去中心化...
查看>>
印度加密交易所解禁:交易量暴增6倍,全球Buy in了吗?
查看>>
明年3月实施!韩国通过特别金融法案,加密货币完全合法化
查看>>
7种启动Spring Boot项目的方式,一次性打包说给你听
查看>>
Js动态生成Div、带属性。append()和appendChild()
查看>>
整合trtc遇到的坑:<ERROR> navigator.mediaDevices is undefined
查看>>
前端实现视频在线预览插件之video.js上手
查看>>