2017-02-22 88 views
0

我遇到問題。我只想替換某些字符串,只要它們完全像我輸入的那樣。因此,如果有一個字符串與5 Eur他只能用例如Steam 5 Euro,如果他獨自一人,而不是如果字符串像How are you 5 Eur pls僅在字符串搜索時替換字符串(preg_replace多字節)

用我的實際代碼,這是不可能的......我用的如:

$string = str_replace('Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro', $string) 

因爲這裏的字符串包含25 Eur這段代碼也增加了一些東西:

$string = str_replace('25 Eur', 'Steam 25 Euro', $string); 

但是,如果我要使用preg_replace(/\b25 Eur\b/i)我得到這個錯誤:

PHP Warning: preg_replace(): Unknown modifier '�' in

所以我有兩個曲提示:

  1. 如何使用多字節替換功能?

  2. 我該如何告訴這個函數只是爲了替換某個字符串,如果他是獨立的,而不是他是否包含搜索到的字符串?

問候和謝謝你!

+0

我沒有看到未知的修飾,但錨圖案'/^25 EUR $/i' – AbraCadaver

+0

這僅僅是一個片斷。我的實際列表較長,包含字符' ' - 使用'/^25 Eur $/i',它只能替換它的字符串而不是獨立的字符串? - 只有在沒有任何東西的情況下? – Jan

+0

不清楚,是什麼意思*一個沒有任何*的STRING?因爲'/^25 Eur $/i' - 是一種情況,'/ \ b25 Eur \ b/i' - 是另一種情況 – RomanPerekhrest

回答

1

這應該工作。

搜索方式:

^(25 Eur)$ 

替換:

Steam 25 Euro 

輸入:

Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro 
25 Eur 

輸出:

Apple Itunes 25 Euro Guthaben Prepaid De', 'Apple iTunes 25 Euro 
Steam 25 Euro 

PHP代碼:

<?php 
$re = '/^(25 Eur)$/m'; 
$str = 'Apple Itunes 25 Euro Guthaben Prepaid De\', \'Apple iTunes 25 Euro 
25 Eur'; 
$subst = 'Steam 25 Euro'; 

$result = preg_replace($re, $subst, $str); 

echo "The result of the substitution is ".$result; 

參見:https://regex101.com/r/3DKEas/2