<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>扯Web &#187; 函数</title>
	<atom:link href="http://cheweb.org/tag/%e5%87%bd%e6%95%b0/feed" rel="self" type="application/rss+xml" />
	<link>http://cheweb.org</link>
	<description>闲扯天朝网络，助力中国博客</description>
	<lastBuildDate>Fri, 18 Nov 2011 02:03:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>10个不常见却很有用的PHP函数</title>
		<link>http://cheweb.org/298.html</link>
		<comments>http://cheweb.org/298.html#comments</comments>
		<pubDate>Sat, 16 Jan 2010 07:42:49 +0000</pubDate>
		<dc:creator>Ven</dc:creator>
				<category><![CDATA[Web技术]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[函数]]></category>

		<guid isPermaLink="false">http://cheweb.org/?p=298</guid>
		<description><![CDATA[1. sys_getloadavg()
sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组，每个元素分别代表系统再过去的1、5和15分钟内的平均负载。
与其让服务器因负载过高而宕掉，不如在系统负载很高时主动die掉一个脚本，sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾，该函数在windows下无效。
2. pack()
Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串，可以节省存储空间。
3. cal_days_in_month()
cal_days_in_month()能够返回指定月份共有多少天。
4. _()
WordPress开发者经常能见到这个函数，还有_e()。这两个函数功能相同，与gettext()函数结合使用，能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。
5. get_browser()
在发送页面前先看看用户的浏览器都能做些什么是不是挺好？get_browser()能获得用户的浏览器类型，以及浏览器支持的功能，不过首先你需要一个php_browscap.ini文件，用来给函数做参考文件。
要注意，该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如，如果用户关闭了浏览器对JavaScript的支持，函数无法得知这一点。但是在判断浏览器类型和OS平台方面，该函数还是很准确的。
6. debug_print_backtrace()
这是一个调试用的函数，能帮助你发现代码中的逻辑错误。要理解这个函数，还是直接看个例子吧：
$a = 0;
function iterate() {
global $a;
if( $a &#60; 10 )
recur();
echo $a . &#8220;, &#8220;;
}
function recur() {
global $a;
$a++;
// how did I get here?
echo &#8220;\n\n\n&#8221;;
debug_print_backtrace();
if( $a &#60; 10 )
iterate();
}
iterate();
# OUTPUT:
#0  recur() called at [C:\htdocs\php_stuff\index.php:8]
#1  iterate() called at [C:\htdocs\php_stuff\index.php:25]
#0  recur() called at [C:\htdocs\php_stuff\index.php:8]
#1  iterate() called at [C:\htdocs\php_stuff\index.php:21]
#2  recur() called at [C:\htdocs\php_stuff\index.php:8]
#3 ...]]></description>
			<content:encoded><![CDATA[<p><strong>1. sys_getloadavg()</strong></p>
<p>sys_getloadavt()可以获得系统负载情况。该函数返回一个包含三个元素的数组，每个元素分别代表系统再过去的1、5和15分钟内的平均负载。</p>
<p>与其让服务器因负载过高而宕掉，不如在系统负载很高时主动die掉一个脚本，sys_getloadavg()就是用来帮你实现这个功能的。 不过很遗憾，该函数在windows下无效。</p>
<p><strong>2. pack()</strong></p>
<p>Pack()能将md5()返回的32位16进制字符串转换为16位的二进制字符串，可以节省存储空间。</p>
<p><strong>3. cal_days_in_month()</strong></p>
<p><span id="more-298"></span>cal_days_in_month()能够返回指定月份共有多少天。</p>
<p><strong>4. _()</strong></p>
<p>WordPress开发者经常能见到这个函数，还有_e()。这两个函数功能相同，与gettext()函数结合使用，能实现网站的多语言化。具体可参见PHP手册的相关部分介绍。</p>
<p><strong>5. get_browser()</strong></p>
<p>在发送页面前先看看用户的浏览器都能做些什么是不是挺好？get_browser()能获得用户的浏览器类型，以及浏览器支持的功能，不过首先你需要一个php_browscap.ini文件，用来给函数做参考文件。</p>
<p>要注意，该函数对浏览器功能的判断是基于该类浏览器的一般特性的。例如，如果用户关闭了浏览器对JavaScript的支持，函数无法得知这一点。但是在判断浏览器类型和OS平台方面，该函数还是很准确的。</p>
<p><strong>6. debug_print_backtrace()</strong></p>
<p>这是一个调试用的函数，能帮助你发现代码中的逻辑错误。要理解这个函数，还是直接看个例子吧：</p>
<blockquote><p>$a = 0;</p>
<p>function iterate() {<br />
global $a;<br />
if( $a &lt; 10 )<br />
recur();<br />
echo $a . &#8220;, &#8220;;<br />
}</p>
<p>function recur() {<br />
global $a;<br />
$a++;</p>
<p>// how did I get here?<br />
echo &#8220;\n\n\n&#8221;;<br />
debug_print_backtrace();</p>
<p>if( $a &lt; 10 )<br />
iterate();</p>
<p>}</p>
<p>iterate();</p>
<p># OUTPUT:</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#2  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#3  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p>
<p>#0  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#1  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#2  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#3  iterate() called at [C:\htdocs\php_stuff\index.php:21]<br />
#4  recur() called at [C:\htdocs\php_stuff\index.php:8]<br />
#5  iterate() called at [C:\htdocs\php_stuff\index.php:25]</p></blockquote>
<p><strong>7. metaphone()</strong></p>
<p>这个函数返回单词的metaphone值，相同读音的单词具有相同的metaphone值，也就是说这个函数可以帮你判断两个单词的读音是否相同。不过对中文就无效了。。。</p>
<p><strong>8. natsort()</strong></p>
<p>natsort()能将一个数组以自然排序法进行排列，直接看个例子吧：</p>
<blockquote><p>$items = array(<br />
&#8220;100 apples&#8221;, &#8220;5 apples&#8221;, &#8220;110 apples&#8221;, &#8220;55 apples&#8221;<br />
);</p>
<p>// normal sorting:<br />
sort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
# )</p>
<p>natsort($items);<br />
print_r($items);<br />
# Outputs:<br />
# Array<br />
# (<br />
#     [2] =&gt; 5 apples<br />
#     [3] =&gt; 55 apples<br />
#     [0] =&gt; 100 apples<br />
#     [1] =&gt; 110 apples<br />
# )</p></blockquote>
<p><strong>9. levenshtein()</strong></p>
<p>Levenshtein()告诉你两个单词之间的“距离”。它告诉你如果想把一个单词变成另一个单词，需要插入、替换和删除多少字母。</p>
<p>看个例子吧：</p>
<blockquote><p>$dictionary = array(<br />
&#8220;php&#8221;, &#8220;javascript&#8221;, &#8220;css&#8221;<br />
);</p>
<p>$word = &#8220;japhp&#8221;;</p>
<p>$best_match = $dictionary[0];<br />
$match_value = levenshtein($dictionary[0], $word);</p>
<p>foreach($dictionary as $w) {<br />
$value = levenshtein($word, $w);<br />
if( $value &lt; $match_value ) {<br />
$best_match = $w;<br />
$match_value = $value;<br />
}<br />
}</p>
<p>echo &#8220;Did you mean the &#8216;$best_match&#8217; category?&#8221;;</p></blockquote>
<p><strong>10. glob()</strong></p>
<p>glob()会让你觉得用opendir(), readdir()和closedir()来寻找文件非常蠢。</p>
<blockquote><p>foreach (glob(&#8220;*.php&#8221;) as $file)<br />
echo &#8220;$file\n&#8221;;</p></blockquote>
<p>本文首发于<a href="http://www.mrven.com/?p=533">布鲁文的蓝色奇想</a>
<div style="margin-top: 15px;">
<p><strong>原创编著/编译，转载请给面子：</strong> 转载自<a href="http://cheweb.org/">扯Web</a>，<strong>本文原始链接:</strong> <a href="http://cheweb.org/298.html">10个不常见却很有用的PHP函数</a></p>
</div>
<h3  class="related_post_title">继续阅读：</h3><ul class="related_post"><li><a href="http://cheweb.org/535.html" title="选择网站主机时必须注意的20个问题">选择网站主机时必须注意的20个问题</a></li><li><a href="http://cheweb.org/438.html" title="phpMyAdmin开发人员访谈&mdash;&mdash;4个人支持整个项目">phpMyAdmin开发人员访谈&mdash;&mdash;4个人支持整个项目</a></li><li><a href="http://cheweb.org/49.html" title="PHP4何时会死？">PHP4何时会死？</a></li></ul><hr />
<p><small>
<a href="http://cheweb.org/298.html#comments">觉得文章靠谱？欢迎发表评论！</a> |
<a href="http://cheweb.org/298.html">本文永久链接</a> 
|作者: Ven  | © <a href="http://cheweb.org">扯Web</a>, 2010 版权所有 
</small></p>]]></content:encoded>
			<wfw:commentRss>http://cheweb.org/298.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

