php preg_replace替換實例講解
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
是執(zhí)行一個正則表達式的搜索和替換的用函數(shù),平時我們用它時多是一次替換結(jié)束,今天又看php手冊發(fā)現(xià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)容這兩項都是數(shù)組的話它們應該相對應,如果replacement中的元素比pattern中的少, 多出來的pattern使用空字符串進行替換.
$pattern就像個掃描器,掃到匹配的就用于之對應的$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
第一項最終被替換為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é)一點,拿$pattern里的每一個模式依次去匹配$subject里的每一個元素,匹配到了就用與$pattern對應的那個$replace對換,如上例,可能不止一次替換
- PHP preg_replace() 正則替換所有符合條件的字符串
- PHP 字符串正則替換函數(shù)preg_replace使用說明
- PHP正則替換函數(shù)preg_replace和preg_replace_callback使用總結(jié)
- php正則之函數(shù) preg_replace()參數(shù)說明
- 詳解PHP正則表達式替換實現(xiàn)(PHP preg_replace,PHP preg_replace)
- php中preg_replace正則替換用法分析【一次替換多個值】
- PHP 正則表達式之正則處理函數(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)文章
使用session判斷用戶登錄用戶權(quán)限(超簡單)
本篇文章是對session判斷用戶登錄用戶權(quán)限進行了詳細的分析介紹,需要的朋友參考下2013-06-06
php實現(xiàn)比較全的數(shù)據(jù)庫操作類
這篇文章主要介紹了php實現(xiàn)比較全的數(shù)據(jù)庫操作類,可實現(xiàn)基本的數(shù)據(jù)庫連接、執(zhí)行SQL語句及錯誤提示等相關(guān)技巧,需要的朋友可以參考下2015-06-06
php專用數(shù)組排序類ArraySortUtil用法實例
這篇文章主要介紹了php專用數(shù)組排序類ArraySortUtil用法,實例分析了ArraySortUtil實現(xiàn)數(shù)組排序的方法與對應使用技巧,需要的朋友可以參考下2015-04-04
php遞歸實現(xiàn)無限分類生成下拉列表的函數(shù)
php自定義函數(shù)之遞歸實現(xiàn)無限分類生成下拉列表,這樣可以提高效率,不用每次都從數(shù)據(jù)庫讀取數(shù)據(jù)。2010-08-08

