php有用但不常见函数拾遗

转载 http://blog.csdn.net/jackyrongvip/article/details/9217829

sys_getloadavg()

这个函数返回当前系统的负载均值信息(当然 Windows 下不适用),详细文档可以翻阅 PHP 的相关文档。文档中有段示例代码,基本上也就能看出它的用途了。



<?php

$load = sys_getloadavg();

if ($load[0] > 80) {

    header('HTTP/1.1 503 Too busy, try again later');

    die('Server too busy. Please try again later.');

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

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()
pack 对应的还有个函数为 unpack,用于压缩二进制串,文中的作者的示例非常清楚

$pass_hash = pack("H*", md5("my-password"));如果你使用 PHP5,那么可以直接这样子

$pass_hash = md5("my-password", true); // PHP 5+这样做的好处之一是能减少串存储空间(能节省多少呢?可能又会是另篇文章了)。

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

<?php

function pack_array($v,$a) {

return call_user_func_array(pack,array_merge(array($v),(array)$a));

}cal_days_in_month()
该函数可以直接返回指定月份中的天数,例如

$days = cal_days_in_month(CAL_GREGORIAN, date("m"), date("Y")); // 31我敢保证,你自己实现过类似功能的函数 :^)

_()
呃,这的确也是个 PHP 函数(也有可能是最短的 PHP 内置函数)。_() 是它的“小名”,它的大名是 gettext()。

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

// Set language to German

setlocale(LC_ALL, 'de_DE');



// Specify location of translation tables

bindtextdomain("myPHPApp", "./locale");



// Choose domain

textdomain("myPHPApp");



echo _("Have a nice day");利用 gettext 可以编写多语言的应用,现在您感兴趣的可能就是如何编写 locale 文件,这但已经不是此文涉及的重点,更多信息可以移步到这里。

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

更多的信息可以参考这里。在使用此函数前,你可能需要个 browscap.ini 配置文件,相信你可以搞定的。

debug_print_backtrace()
以前查看函数调用堆栈,我会使用 xdebug 等的扩展,其实 PHP5 版本以后已经内置了相关的函数。

顺便再分享个“蛋疼”的小技巧,如果你记不住这个函数的名字,可以用这段代码同样能达到目的(看起来还是记住那个函数靠谱):

<?php

$e = new Exception();

print_r(str_replace('/path/to/code/', '', $e->getTraceAsString()));natsort()
这个函数用于自然排序,这个大家可能都要用到。贴下相关的文档链接以及示例代码

natsort() 函数实现了“自然排序”,即数字从 1 到 9 的排序方法,字母从 a 到 z 的排序方法,短者优先。数组的索引与单元值保持关联。

如果成功,则该函数返回 TRUE,否则返回 FALSE。



如:
<?php
$temp_files = array("temp15.txt","temp10.txt",
"temp1.txt","temp22.txt","temp2.txt");

sort($temp_files);
echo "Standard sorting: ";
print_r($temp_files);
echo "<br />";

natsort($temp_files);
echo "Natural order: ";
print_r($temp_files);
?>

输出:
Standard sorting: Array
(
[0] => temp1.txt
[1] => temp10.txt
[2] => temp15.txt
[3] => temp2.txt
[4] => temp22.txt
)

Natural order: Array
(
[0] => temp1.txt
[3] => temp2.txt
[1] => temp10.txt
[2] => temp15.txt
[4] => temp22.txt
)

glob()
这个函数的功能同样让人感到泪奔,先不说功能直接上示例代码

foreach (glob("*.php") as $file) {

    echo "$file\n";

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

$dirs = array_filter(glob($path.'*'), 'is_dir');当然,文件递归你也可以考虑使用下 SPL 扩展。

PHP Filter
如果你还在正则验证字符串,那么就真的“Out”了。自 PHP5.2 版本以后,内置了 PHP Fliter 模块用于专门验证 电子邮件、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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值