如果我有這樣的事情PHP如何搭配@@ MESSAGE @@
This is Before HELLO
@@[email protected]@
@@[email protected]@
Hello @@[email protected]@ssd
This is After
我怎麼只能@@消息匹配@@?我試過這個,它不起作用
preg_replace('/\[email protected]@[email protected]@\b/u', xxx, xxxy);
如果我有這樣的事情PHP如何搭配@@ MESSAGE @@
This is Before HELLO
@@[email protected]@
@@[email protected]@
Hello @@[email protected]@ssd
This is After
我怎麼只能@@消息匹配@@?我試過這個,它不起作用
preg_replace('/\[email protected]@[email protected]@\b/u', xxx, xxxy);
問題是字邊界\b
。它們匹配單詞和非單詞字符,其中單詞字符是字母,數字或下劃線。因爲@
不是一個單詞字符,所以您需要將它包圍,而不是相反。改爲使用非字邊界:
preg_replace('/\[email protected]@[email protected]@\B/', $replacement, $input);
順便說一句,不需要u
修飾符。
您可以使用它來確保有在你的目標白色大字:
preg_replace('~(?:^|\s)\[email protected]@[email protected]@(?=\s|$)~', $replacement, $subject);
要更換每發生使用:
preg_replace('/@@[email protected]@/i', xxx, xxxy);
要更換每全部大寫的 @@ MESSAGE @@使用:
preg_replace('/@@[email protected]@/', xxx, xxxy);
要更換只有 @@消息@@本身使用
preg_replace('/\[email protected]@[email protected]@\B/', xxx, xxxy);
如果最後一種情況是你要找的,那麼請接受m.buettner's answer,因爲這就是我得到了它的一個。
['/@@[email protected]@/i'](http://rubular.com/r/WztkD5J0zL)?你需要使用大小寫不敏感,因爲它看起來你的文本並不都是平等的。 – Prix
你有'這樣的事情'。請張貼您的確切內容,然後我們可以提供幫助。 – 2013-06-28 23:44:38
是否要替換@@ MeSeAgE @@的每一處出現或者只是大寫版本?你是否也想匹配ssd後面的那個? – Herbert