PHP 正規化的好幫手:preg_replace()
某些字串取代不能夠單純的用 str_replace 達成
這時候就要搭配正規化(Regular Expression, 簡寫 Regex)來做到
PHP 中可以用 preg_replace 來做到正規化取代的功能
在大量線上 Post 文或文書處理時
編輯人員往往都不會自行將來源的文字中的網址加上超連結
這時讀者如果想要到文中提及的網站瀏覽
就只能乖乖的複製好網址再貼上到瀏覽器的網址列了
如果想要將文章裡面的文字連結利用正規化變成真的 Hyper Link
請試看看以下的範例:
延伸閱讀:
PHP 編寫 BBCode 函式
這時候就要搭配正規化(Regular Expression, 簡寫 Regex)來做到
PHP 中可以用 preg_replace 來做到正規化取代的功能
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit [, int &$count ]] )
在大量線上 Post 文或文書處理時
編輯人員往往都不會自行將來源的文字中的網址加上超連結
這時讀者如果想要到文中提及的網站瀏覽
就只能乖乖的複製好網址再貼上到瀏覽器的網址列了
如果想要將文章裡面的文字連結利用正規化變成真的 Hyper Link
請試看看以下的範例:
<?php
// 將字串中的網址加入超連結
function parseURL($strURL = null)
{
$regex = "{ ((https?|telnet|gopher|file|wais|ftp):[\\w/\\#~:.?+=&%@!\\-]+?)(?=[.:?\\-]*(?:[^\\w/\\#~:.?+=&%@!\\-]|$)) }x";
return preg_replace(
$regex,
"<a href=\"$1\" target=\"_blank\" alt=\"$1\" title=\"$1\">$1</a>",
$strURL);
}
echo ParseMsg('http://www.php.net');
?>
得到的結果:
http://www.php.net
延伸閱讀:
PHP 編寫 BBCode 函式
Comments
有個不太懂的地方想請教您:
href=\"$1\",
$1是怎麼來的呢?表達式的結果是如何存成$1變數?
非常感謝!
$1 是從 $regex 來的
利用正規化的條件
將參數 $strURL 跟 $regex 比對
有符合規則的話就套入條件
所以 $strURL 可以不必僅是 http://www.php.net
也可以是字串中含有超連結的文字
此 function 將會自動取代
可參考 http://tw2.php.net/manual/en/function.preg-replace.php
謝謝瀏覽~
請問[\\w]這怎麼解讀呢?
我還看過[\@]這些從基本說明中都沒有這樣的用法阿?