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