2017-02-23 15 views
0

我已經用Google搜索,並試圖掩飾我的字符串\\\///但其中的非工作....我的字符串是:[XBOX XBOX Windows],我使用mb_eregi_replace(...)如何隱藏[和]在mb_eregi_replace()正則表達式?

我現在的問題是我怎麼能斗篷[]告訴mb_eregi_replace(...)功能,這些都[]字符屬於字符串?

我的代碼:

$string = "[XBOX XBOX Windows]"; 
echo mb_eregi_replace('\b[XBOX XBOX Windows]\b', 'XBOX Live 25 Euro', $string); 

我把\\\///[]之前。

問候和謝謝你!

+0

不,不行! – Jan

回答

2

注意,與單詞邊界沿搜索字符串也可以在開始匹配和/或者在字符串的末尾。
使用各自的錨^$

$string = "[XBOX XBOX Windows]"; 
echo mb_eregi_replace('(^|\b)\[XBOX XBOX Windows\](\b|$)', 'XBOX Live 25 Euro', $string); 
// output: XBOX Live 25 Euro 
+0

非常感謝! – Jan

+0

請注意,在'['或']'之前或之後存在空格,逗號等時,這將失敗。 – jeroen

0

這是你所需要的嗎?

$string = "[XBOX XBOX Windows]"; 
echo mb_eregi_replace('\[XBOX XBOX Windows\]', 'XBOX Live 25 Euro', $string) . "\n"; // echoes 'XBOX Live 25 Euro' 
+0

差不多。輸出應該是'XBOX Live 25 Euro'。但是我也想使用'/ bMySearchesWord/b',因爲它是節省的。 – Jan

0

你需要用反斜線轉義:

echo mb_eregi_replace('\b\[XBOX XBOX Windows\]\b', 'XBOX Live 25 Euro', $string); 

然而,你的代碼不會因爲你之前和[]字符後,併爲把字邊界\b工作開始,也不是結束,也不是這兩個字符都是單詞邊界,你什麼都不會匹​​配。

字邊界的替代方法將如下所示,使用倒排字符類來匹配除字詞字符以外的任何字符。但是,你有去適應你的需求(開頭和字符串例如結尾):

echo mb_eregi_replace('[^\w]\[XBOX XBOX Windows\][^\w]', 'XBOX Live 25 Euro', $string); 
+0

但用字界限更安全。因爲我只想替換和搜索'[XBOX XBOX Windows]'而不是如果它像'testtest [XBOX XBOX Windows]' – Jan

+1

您問過已經http://stackoverflow.com/questions/42401062/replace-string -only-if-string-is-search-preg-replace-multibyte – AbraCadaver

+0

@Jan看我的編輯。 – jeroen

相關問題