2017-02-22 89 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