正則表達(dá)式的搜索與替換在某些方面具有重要用途,比如調(diào)整目標(biāo)字符串的格式,改變目標(biāo)字符串中匹配字符串的順序等。
例如我們可以簡(jiǎn)單的調(diào)整字符串的日期格式:
$string = 'April 15, 2014'; $pattern = '/(\w+) (\d+), (\d+)/i'; $replacement = '$3, ${1} $2'; echo preg_replace($pattern, $replacement, $string); //結(jié)果為:2014, April 15
其中${1}與$1的寫法是等效的,表示第一個(gè)匹配的字串,$2代表第二個(gè)匹配的。
通過(guò)復(fù)雜的模式,我們可以更加精確的替換目標(biāo)字符串的內(nèi)容。
$patterns = array ('/(19|20)(\d{2})-(\d{1,2})-(\d{1,2})/', '/^\s*{(\w+)}\s*=/'); $replace = array ('\3/\4/\1\2', '$\1 =');//\3等效于$3,\4等效于$4,依次類推 echo preg_replace($patterns, $replace, '{startDate} = 1999-5-27'); //結(jié)果為:$startDate = 5/27/1999 //詳細(xì)解釋下結(jié)果:(19|20)表示取19或者20中任意一個(gè)數(shù)字,(\d{2})表示兩個(gè)數(shù)字,(\d{1,2})表示1個(gè)或2個(gè)數(shù)字,(\d{1,2})表示1個(gè)或2個(gè)數(shù)字。^\s*{(\w+)}\s*=表示以任意空格開頭的,并且包含在{}中的字符,并且以任意空格結(jié)尾的,最后有個(gè)=號(hào)的。
用正則替換來(lái)去掉多余的空格與字符:
$str = 'one two'; $str = preg_replace('/\s+/', ' ', $str); echo $str; // 結(jié)果改變?yōu)?#39;one two'
將目標(biāo)字符串$str中的文件名替換后增加em標(biāo)簽,例如index.php要替換成<em>index.php</em>。
參考代碼:
$str = '主要有以下幾個(gè)文件:index.php, style.css, common.js'; $p = '/\w+\.\w+/i'; $str = preg_replace($p, '<em>$0</em>', $str); echo $str;
請(qǐng)驗(yàn)證,完成請(qǐng)求
由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求
打開微信掃碼自動(dòng)綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報(bào)