我使用下面的代码将她和她一起替换为她。
$string = 'The quick he fox jumps over the lazy dog.';
$patterns = array();
$patterns[0] = '/he/';
//$patterns[1] = '/brown/';
//$patterns[2] = '/fox/';
$replacements = array();
$replacements[2] = 'she';
//$replacements[1] = 'black';
//$replacements[0] = 'slow';
echo preg_replace($patterns, $replacements, $string);
但它在执行后返回字符串
Tshe quick she fox jumps over tshe lazy dog.
所以问题是它还将“the”转换为“tshe”我只想替换单独的单词(喜欢他)而不是部分单词 (不喜欢)。
答案 0 :(得分:4)
试试这个:这将只替换整个单词
如果$string
包含UTF-8文本,则必须添加Unicode修饰符“u”,以便非拉丁字符不会被误解为字边界:
$string = 'The quick he fox jumps over the lazy dog.';
$replace = preg_replace('/\bhe\b/u', 'she', $string);
echo $replace;
答案 1 :(得分:2)
您需要/\bshe\b/
<?php
$string = "The quick he-fox jumps over the lazy dog.";
echo preg_replace("/\bhe(-?)\b/u", "she$1", $string);
?>
/u
修饰符用于unicode支持,以确保正确解释非Unicode字符。
这将匹配he fox
和he-fox
,并将其更改为所需的she fox
或she-fox
。
\b
- 开始字边界。he
- 匹配字面词he
。(
- 开始捕获组。-?
- 匹配零个或一个字面连字符。\b
- 结束字边界。在替换中,"she$1
&#34;将写出单词she
,$1
将成为该组的捕获。如果有一个连字符,它将输出它,否则它不会。
答案 2 :(得分:0)
答案 3 :(得分:-1)
$patterns[0] = '/ he /';
这是你的解决方案。