【发布时间】:2017-10-10 20:37:42
【问题描述】:
我想在句子或段落中用bye 替换每个出现的hello。
$sentence = 'nothello hello hello hello hello hello';
$find = 'hello';
$replace = 'bye';
$str = preg_replace('/(^|[\s])'.$find.'([\s]|$)/', '$1'.$replace.'$2', $sentence);
echo $str;
我希望它回显nothello bye bye bye bye bye,但我却得到nothello bye hello bye hello bye。
我做错了什么?
我不能使用\b,因为我使用了很多语言。
*编辑
如果你使用u 标志,我猜\b 可以工作。
【问题讨论】:
-
这里使用
str_replace而不是preg_replace试试这个eval.in/792387 -
str_replace .. 试试这个兄弟
-
您可以使用
\b,因为一旦您使用 unicodeu修饰符,\b就可以识别 Unicode 并匹配 Unicode 字边界。 -
preg_replace('/\b'.$find.'\b/u', $replace, $sentence);应该可以工作。据说它从 PHP 5.3.4 开始工作