2013-06-28 42 views
0

如果我有這樣的事情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); 
+0

['/@@[email protected]@/i'](http://rubular.com/r/WztkD5J0zL)?你需要使用大小寫不敏感,因爲它看起來你的文本並不都是平等的。 – Prix

+0

你有'這樣的事情'。請張貼您的確切內容,然後我們可以提供幫助。 – 2013-06-28 23:44:38

+0

是否要替換@@ MeSeAgE @@的每一處出現或者只是大寫版本?你是否也想匹配ssd後面的那個? – Herbert

回答

2

問題是字邊界\b。它們匹配單詞和非單詞字符,其中單詞字符是字母,數字或下劃線。因爲@不是一個單詞字符,所以您需要將它包圍,而不是相反。改爲使用非字邊界:

preg_replace('/\[email protected]@[email protected]@\B/', $replacement, $input); 

順便說一句,不需要u修飾符。

Working demo.