PHP里有非常豐富的內置函數,很多我們都用過,但仍有很多的函數我們大部分人都不熟悉,可它們卻十分的有用。這篇文章里,我列舉了一些鮮為人知但會讓你眼睛一亮的PHP函數。
levenshtein()
你有沒有經歷過需要知道兩個單詞有多大的不同的時候,這個函數就是來幫你解決這個問題的。它能比較出兩個字符串的不同程度。
用法:
<?php
$str1 = "carrot";
$str2 = "carrrott";
echo levenshtein($str1, $str2); //Outputs 2
?>
get_defined_vars()
這是一個在debug調試時非常有用的函數。這個函數返回一個多維數組,里面包含了所有定義過的變量。
用法:
<?php
print_r(get_defined_vars());
?>
php_check_syntax()
這個函數非常的有用,可以用來檢查PHP的語法是否正確。出于技術上的原因,從PHP 5.05開始,這個函數被刪除了。
用法:
<?php
$error_message = "";
$filename = "./php_script.php";
if(!php_check_syntax($filename, &$error_message)) {
echo "Errors were found in the file $filename: $error_message";
} else {
echo "The file $filename contained no syntax errors";
}
?>
ignore_user_abort()
這個函數用來拒絕瀏覽器端用戶終止執行腳本的請求。正常情況下客戶端的退出會導致服務器端腳本停止運行。
用法:
<?php
ignore_user_abort();
?>
highlight_string()
當你想把PHP代碼顯示到頁面上時,highlight_string()函數就會顯得非常有用。這個函數會把你提供的PHP代碼用內置的PHP語法突出顯示定義的顏色高亮顯示。這個函數有兩個參數,第一個參數是一個字符串,表示這個字符串需要被突出顯示。第二個參數如果設置成TRUE,這個函數就會把高亮后的代碼當成返回值返回。
用法
<?php
highlight_string(' <?php phpinfo(); ?>');
?>
highlight_file
這是一個非常有用的PHP函數,它能返回指定的PHP文件,并按照語法語義用高亮顏色突出顯示文件內容。其中的突出顯示的代碼都是用HTML標記處理過的。
用法:
<?php
highlight_file("php_script.php");
?>
php_strip_whitespace
這個函數也跟前面的show_source()函數相似,但它會刪除文件里的注釋和空格符。
用法:
<?php
echo php_strip_whitespace("php_script.php");
?>
get_browser
這個函數會讀取browscap.ini文件,返回瀏覽器兼容信息。
用法:
<?php
echo $_SERVER['HTTP_USER_AGENT'];
$browser = get_browser();
print_r($browser);
?>
memory_get_usage(),memory_get_peak_usage(),getrusage()
這些函數用來獲取內存和CPU使用情況,memory_get_usage()函數返回內存使用量,memory_get_peak_usage()函數返回內存使用峰值,getrusage()返回CUP使用情況,在調試PHP代碼性能時,這些函數會給你提供一些有用信息。但有一點請注意,在這些函數中Window上無效。
用法:
<?php
echo "Initial: ".memory_get_usage()." bytes \n";
echo "Peak: ".memory_get_peak_usage()." bytes \n";
$data = getrusage();
echo "User time: ".
($data['ru_utime.tv_sec'] +
$data['ru_utime.tv_usec'] / 1000000);
echo "System time: ".
($data['ru_stime.tv_sec'] +
$data['ru_stime.tv_usec'] / 1000000);
?>
gzcompress(), gzuncompress()
這兩個函數用來壓縮和解壓字符串數據。它們的壓縮率能達到50% 左右。另外的函數 gzencode() 和 gzdecode() 也能達到類似結果,但使用了不同的壓縮算法。
用法:
<?php
$string =
"Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nunc ut elit id mi ultricies
adipiscing. Nulla facilisi. Praesent pulvinar,
sapien vel feugiat vestibulum, nulla dui pretium orci,
non ultricies elit lacus quis ante. Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Aliquam
pretium ullamcorper urna quis iaculis. Etiam ac massa
sed turpis tempor luctus. Curabitur sed nibh eu elit
mollis congue. Praesent ipsum diam, consectetur vitae
ornare a, aliquam a nunc. In id magna pellentesque
tellus posuere adipiscing. Sed non mi metus, at lacinia
augue. Sed magna nisi, ornare in mollis in, mollis
sed nunc. Etiam at justo in leo congue mollis.
Nullam in neque eget metus hendrerit scelerisque
eu non enim. Ut malesuada lacus eu nulla bibendum
id euismod urna sodales. ";
$compressed = gzcompress($string);
$original = gzuncompress($compressed);
?>
你是否也想到了還有其它很有用的函數?請在評論里分享出來!
[英文原文:10 little known but useful PHP functions ]
[譯文:http://www.vaikan.com/10-little-known-but-useful-php-functions/]
- PHP技術文章
- PHP中session和cookie的區別
- php設計模式(一):簡介及創建型模式
- php設計模式結構型模式
- Php設計模式(三):行為型模式
- 十款最出色的 PHP 安全開發庫中文詳細介紹
- 12個提問頻率最高的PHP面試題
- PHP 語言需要避免的 10 大誤區
- PHP 死鎖問題分析
- 致PHP路上的“年輕人”
- PHP網站常見安全漏洞,及相應防范措施總結
- 各開源框架使用與設計總結(一)
- 數據庫的本質、概念及其應用實踐(二)
- PHP導出MySQL數據到Excel文件(fputcsv)
- PHP中14種排序算法評測
- 深入理解PHP原理之--echo的實現
- PHP性能分析相關的函數
- PHP 性能分析10則
- 10 位頂級 PHP 大師的開發原則
- 30條爆笑的程序員梗 PHP是最好的語言
- PHP底層的運行機制與原理
- PHP 性能分析與實驗——性能的宏觀分析
- PHP7 性能翻倍關鍵大揭露
- 鳥哥:寫在PHP7發布之際一些話
- PHP與MySQL通訊那點事
- Php session內部執行流程的再次剖析
- 關于 PHP 中的 Class 的幾點個人看法
- PHP Socket 編程過程詳解
- PHP過往及現在及變革
- PHP吉祥物大象的由來
- PHP生成靜態頁面的方法
- 吊炸天的 PHP 7 ,你值得擁有!
- PHP開發中文件操作疑難問答
- MongoDB PHP Driver的連接處理解析
- PHP 雜談《重構-改善既有代碼的設計》之二 對象
- 在php中判斷一個請求是ajax請求還是普通請求的方法
- 使用HAProxy、PHP、Redis和MySQL支撐10億請求每周架構細節
- HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、Web Services 是什么?
- 重構-改善既有代碼的設計
- PHP場景中getshell防御思路分享
- 移動互聯時代,你看看除了PHP你還會些什么
- 安卓系統上搭建本地php服務器環境
- PHP中常見的緩存技術!
- PHP里10個鮮為人知但卻非常有用的函數
- 成為一名PHP專家其實并不難
- PHP 命令行?是的,您可以!
- PHP開發提高效率技巧
- PHP八大安全函數解析
- PHP實現四種基本排序算法
- PHP開發中的中文編碼問題
- php.get.post
- php發送get、post請求的6種方法簡明總結
- 中高級PHP開發者應該掌握哪些技術?
- 前端開發
- web前端知識體系大全
- 前端工程與性能優化(下)
- 前端工程與性能優化(上)
- 2016 年技術發展方向
- Web應用檢查清單
- 如何成為一名優秀的web前端工程師
- 前端組件化開發實踐
- 移動端H5頁面高清多屏適配方案
- 2015前端框架何去何從
- 從前端看“百度遷徙”的技術實現(一)
- 從前端看“百度遷徙”的技術實現(二)
- 前端路上的旅行
- 大公司里怎樣開發和部署前端代碼?
- 5個經典的前端面試問題
- 前端工程師新手必讀
- 手機淘寶前端的圖片相關工作流程梳理
- 一個自動化的前端項目實現(附源碼)
- 前端代碼異常日志收集與監控
- 15年雙11手淘前端技術總結 - H5性能最佳實踐
- 深入理解javascript原型和閉包系列
- 一切都是對象
- 函數和對象的關系
- prototype原型
- 隱式原型
- instanceof
- 繼承
- 原型的靈活性
- 簡述【執行上下文】上
- 簡述【執行上下文】下
- this
- 執行上下文棧
- 簡介【作用域】
- 【作用域】和【上下文環境】
- 從【自由變量】到【作用域鏈】
- 閉包
- 完結
- 補充:上下文環境和作用域的關系
- Linux私房菜