7. 回調(diào)(Callbacks)
匹配結(jié)果中的特定內(nèi)容有時可能會需要某種特別的修改。要應(yīng)用多重而復(fù)雜的修改,正則表達(dá)式的回調(diào)就有了用武之地。回調(diào)是用于函數(shù)preg_replace_callback中的動態(tài)修改字串的方式。你可以為preg_replace_callback指定某個函數(shù)為參數(shù),此函數(shù)能接收匹配結(jié)果數(shù)組為參數(shù),并將數(shù)組修改后返回,作為替換的結(jié)果。 例如,我們想將某字串中的字母全部轉(zhuǎn)變成大寫。十分不巧,PHP沒有直接轉(zhuǎn)化字母大小寫的正則操作符。要完成這項任務(wù),就可以用到正則回調(diào)。首先,表達(dá)式要匹配出所有需要被大寫的字母:
/\b\w/
上式同時使用了字詞邊界和字符類。光有這個式子還不夠,我們還需要一個回調(diào)函數(shù):
function upper_case( $matches ) { return strtoupper( $matches[0] ); }
函數(shù)upper_case接收匹配結(jié)果數(shù)組,并將整個匹配結(jié)果轉(zhuǎn)化成大寫。 在此例中,$matches[0]代表需要被大寫化的字母。然后,我們再利用preg_replace_callback實現(xiàn)回調(diào):
preg_replace_callback( '/\b\w/', 'upper_case', $str );
一個簡單的回調(diào)即有這般強(qiáng)大的力量。
出處:笨活兒
責(zé)任編輯:bluehearts
上一頁 遞歸(Recursion) 下一頁 注釋(Commenting)
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|