文件上說,PHP 這個程式語言,是採擷 Perl、C、以及 Java 的一些優點所形成。Perl 的優點是什麼呢?我覺得,主要就是提供一套強大的處理函式,可以利用正規語言表達式 (Regular Expression,或可直接譯為「正規表達式」) 來對字串進行比對與取代。
雜事做多了,就自然能夠感受 Perl 或 PHP 那些處理字串函式的優點。例如,很常見的一項雜務,就是一個「a,b,c,d,e」這樣的字串,用逗點切分,放在陣列中供後續處理;或者反過來,將一個陣列的內容一個個地傾印出來,但是在兩項內容間,加入一個分號。PHP 的 explode() 與 implode(),就可以做這樣的事情:
$s = "a,b,c,d,e";
$array = explode(",", $s);
$t = implode(";", $array);
<a href='www.yahoo.com'>Yahoo</a>
<a HREF=www.google.com>Google</a>
<a HREF=www.google.com>Google</a>
這樣的字串們取代為
<a href="www.yahoo.com">Yahoo</a>
<a href="www.google.com">Google</a>
<a href="www.google.com">Google</a>
在 PHP 裡,要達到這樣的功能是頗容易的:
$pattern = "/<a href=(['\"]?)(.+?)\\1>/i";
$replaced_by = "<a href=\"$2\">";
$t = preg_replace($pattern, $replaced_by, $s);
雖然,現今廣用的程式語言幾乎都有提供 regex.Matcher 與 regex.Pattern 之類的物件,可以依循正規表達式處理字串;但我覺得,繼承了 Perl 的優點後,PHP 在正規表達式的使用上,還是比那些物件導向語言,來得自然、方便太多了。
1 則留言:
寫個無關主題的:
學長的blog用Firefox看是正常的, 用IE的話好像左邊選單就不見了 .....
張貼留言