php preg_replace替換實(shí)例講解
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
是執(zhí)行一個正則表達(dá)式的搜索和替換的用函數(shù),平時我們用它時多是一次替換結(jié)束,今天又看php手冊發(fā)現(xiàn)了一個較為難理解(自認(rèn)為)的例子分享給大家。
<?php
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/\d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');
echo "preg_replace returns\n<pre/>";
print_r(preg_replace($pattern, $replace, $subject));
?>
結(jié)果如下:
咋一看,我就看暈了
一般 若匹配模式和替換內(nèi)容這兩項(xiàng)都是數(shù)組的話它們應(yīng)該相對應(yīng),如果replacement中的元素比pattern中的少, 多出來的pattern使用空字符串進(jìn)行替換.
$pattern就像個掃描器,掃到匹配的就用于之對應(yīng)的$replace替換
對于上例替換過程如下:
/\d/掃描$subject里的1,匹配了,匹配內(nèi)容為$0(也就是1)就把1替換為A:1
然后用/[a-z]/掃描A:1不匹配,就不替換,繼續(xù)用[1a]掃描A:1,匹配內(nèi)容為1(也就是$0),就把A:1中1換為C:1
第一項(xiàng)最終被替換為A:C:1
簡化過程:
1->A:1->A:C:1
a->B:a->B:C:a
2->A:2
b->B:b
A(沒有符合匹配的就不替換了)
B(同上)
4->A:4
總結(jié)一點(diǎn),拿$pattern里的每一個模式依次去匹配$subject里的每一個元素,匹配到了就用與$pattern對應(yīng)的那個$replace對換,如上例,可能不止一次替換
- PHP preg_replace() 正則替換所有符合條件的字符串
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- PHP正則替換函數(shù)preg_replace和preg_replace_callback使用總結(jié)
- php正則之函數(shù) preg_replace()參數(shù)說明
- 詳解PHP正則表達(dá)式替換實(shí)現(xiàn)(PHP preg_replace,PHP preg_replace)
- php中preg_replace正則替換用法分析【一次替換多個值】
- PHP 正則表達(dá)式之正則處理函數(shù)小結(jié)(preg_match,preg_match_all,preg_replace,preg_split)
- php中preg_replace_callback函數(shù)簡單用法示例
- php中使用preg_replace函數(shù)匹配圖片并加上鏈接的方法
- 深入研究PHP中的preg_replace和代碼執(zhí)行
相關(guān)文章
PHP經(jīng)典實(shí)用正則表達(dá)式小結(jié)
這篇文章主要介紹了PHP經(jīng)典實(shí)用正則表達(dá)式,結(jié)合具體實(shí)例總結(jié)分析了php基于正則實(shí)現(xiàn)驗(yàn)證、查找、匹配等相關(guān)操作技巧,需要的朋友可以參考下2017-05-05PHP中類型轉(zhuǎn)換 ,常量,系統(tǒng)常量,魔術(shù)常量的詳解
這篇文章主要介紹了PHP中類型轉(zhuǎn)換 ,常量,系統(tǒng)常量,魔術(shù)常量的詳解的相關(guān)資料,希望通過本文能幫助到大家,讓大家掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10PHP中的數(shù)組處理函數(shù)實(shí)例總結(jié)
這篇文章主要介紹了PHP中的數(shù)組處理函數(shù),結(jié)合實(shí)例形式總結(jié)分析了常見的PHP數(shù)組處理函數(shù)功能,定義及使用技巧,代碼備有詳盡的注釋便于理解,需要的朋友可以參考下2016-01-01php模擬js函數(shù)unescape的函數(shù)代碼
php模擬js函數(shù)unescape的函數(shù)代碼,需要的朋友可以參考下2012-10-10