一些被忽視的 PHP 函數(整理)

來源:互聯網
上載者:User
來自:http://www.gracecode.com/posts/3013.html

真的是不用不知道,其實我們熟悉的 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 環境中沒有這個函數,可以考慮使用下面這段代碼 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

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 Germansetlocale(LC_ALL, 'de_DE'); // Specify location of translation tablesbindtextdomain("myPHPApp", "./locale"); // Choose domaintextdomain("myPHPApp"); echo _("Have a nice day");

利用 gettext 可以編寫多語言的應用,現在您感興趣的可能就是如何編寫 locale 檔案,這但已經不是此文涉及的重點, 更多資訊可以移步到這裡 。

get_browser()

坦白講,見到 這個函數 我當時就徹底淚奔。有了這個函數,再也不用自己去分析 $_SERVER['HTTP_USER_AGENT'] 這個字串了。

更多的資訊可以參考這裡。在使用此函數前, 你可能需要個 browscap.ini 設定檔 ,相信你可以搞定的。

debug_print_backtrace()

以前查看函數呼叫堆疊,我會使用 xdebug 等的擴充,其實 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";}

相比你已經瞭解該函數的用途了,那麼我們就可以有更多的「玩法」,例如就顯示目錄( via ):

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

當然,檔案遞迴你也可以 考慮使用下 SPL 擴充 。

補充 by 神仙 :

glob 有個參數選項 GLOB_ONLYDIR 就可以只列目錄

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)

但這不影響我們去嘗試。有關 PHP Filter 的更多資訊,相信能拎出來另外寫篇文章了。

-- Split --

最後,感歎 PHP 其實是個曆久彌新的工具,不小心我們就會悲劇性得重複造了只輪子。因此,時常看看 PHP 文檔每次都會有新的收穫。


以上就介紹了一些被忽視的 PHP 函數(整理),包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.