php中的preg_replace函数,PHP函数preg_replace()
該函數(shù)可以執(zhí)行正則表達(dá)式的搜索和替換,是一個(gè)最強(qiáng)大的字符串替換處理函數(shù),該函數(shù)會(huì)有三個(gè)參數(shù),subject中搜索第一個(gè)參數(shù)pattern模式的匹配項(xiàng),并替換為第二個(gè)參數(shù),如果指定了第四個(gè)可選參數(shù)limit,則僅替換limit個(gè)匹配,如果省略limit或者其值為-1,則所有的匹配都會(huì)被替換
$pattern = "/]*?/";
$text = "這個(gè)文本中有加粗和都有下劃線以及斜體還有帶有顏色和字體大小的標(biāo)記";
echo preg_replace($pattern,'',$text);
echo "
";
echo preg_replace($pattern,''$text,2);
?>
上例是preg_replace()函數(shù)最簡(jiǎn)單的用法,只是將文本$text中根據(jù)$pattern模式搜索到的html標(biāo)簽全部替換為空,即刪除所有HTML標(biāo)記,也可以通過第四個(gè)參數(shù)傳入一個(gè)整數(shù),用來(lái)指定替換的次數(shù)。
使用preg_replace()函數(shù)時(shí),最常見的形式就是可以包含反向引用,即使用\\n的形式依次引用正則表達(dá)式中的模式單元,每個(gè)此種引用將被替換為與第n個(gè)被捕獲的括號(hào)內(nèi)的子模式所匹配的文本,n可以從0到99,其中\(zhòng)\0指的是被整個(gè)模式所匹配的文本,對(duì)左圓括號(hào)從左到右計(jì)算以取得子模式的數(shù)目,對(duì)替換模式在一個(gè)逆向引用后面緊接著一個(gè)數(shù)字時(shí),不能使用熟悉的\\1符號(hào)來(lái)表示逆向引用,舉例說明\\1,將會(huì)使preg_replace()搞不清楚是想要一個(gè)\\1的逆向引用后面跟著一個(gè)數(shù)字1還是一個(gè)\\1的逆向引用,本例解決的方法是使用\${1}1,這會(huì)形成一個(gè)隔離的$1逆向引用,而使另一個(gè)1只是單純的文字
$pattern = "/(\d{2})\/(\d{2})\/(\d{4})/";
$text = "今年春節(jié)放假日期為01/25/2009到02/02/2009共7天";
echo preg_replace($pattern,"\\3-\\1-\\2",$text);
echo preg_replace($pattern,"\$(3)-\$(1)-\$(2)");
?>
該程序的輸出結(jié)果為
今年春節(jié)放假日期為2009-01-25到2009-02-02共7天
今年春節(jié)放假日期為2009-01-25到2009-02-02共7天
在使用preg_replace()函數(shù)時(shí),有一個(gè)專門為它提供的模式修飾符"e",也只有preg_replace()函數(shù)使用此修飾符,如果設(shè)定了此修飾符,函數(shù)preg_replace()在替換字符串中對(duì)逆向引用做正常的替換,將其作為PHP代碼求值,并用其結(jié)果來(lái)替換搜索的字符串,要確保第二個(gè)參數(shù)構(gòu)成一個(gè)合法的PHP代碼字符串,否則PHP會(huì)在報(bào)告在包含preg_replace()的行中出現(xiàn)語(yǔ)法解析錯(cuò)誤
$pattern = "/(]*>)/e";
$text = "這個(gè)文本中有加粗和都有下劃線以及斜體還有帶有顏色和字體大小的標(biāo)記";
echo preg_replace($pattern,"'\\1'.strtoupper('\\2').'\\3'",$text);//將所有HTML標(biāo)簽小寫改成大寫
?>
在上例中聲明正則表達(dá)式時(shí),使用了模式修正符"e",所以函數(shù)preg_replace()中第二個(gè)參數(shù)的字符串將作為PHP代碼求值
在使用preg_replace()函數(shù)時(shí),其前三個(gè)參數(shù)均可使用數(shù)組,如果第三個(gè)參數(shù)是一個(gè)數(shù)組,則會(huì)對(duì)它中的每個(gè)元素都執(zhí)行搜索和替換,并返回替換后的一個(gè)數(shù)組,如果第一個(gè)參數(shù)和第二個(gè)參數(shù)都是數(shù)組,則會(huì)依次從中分別取出對(duì)應(yīng)的值來(lái)對(duì)第三個(gè)參數(shù)中的文本進(jìn)行搜索和替換,如果第二個(gè)參數(shù)中的值比第一個(gè)參數(shù)中少,則用空字符串作為余下的替換值。如果第一個(gè)參數(shù)是數(shù)組而第二個(gè)參數(shù)是字符串,則對(duì)第一個(gè)參數(shù)中的每個(gè)值都用此字符串作為替換值,反過來(lái)則沒有意義。
總結(jié)
以上是生活随笔為你收集整理的php中的preg_replace函数,PHP函数preg_replace()的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle如何修改列为空,Oracle
- 下一篇: 2021中国汽车供应链峰会盛大开幕,第一