PHP - 在句子的两个位置之间搜索和替换

时间:2014-06-10 23:45:46

标签: php regex

我试图取代'他'通过'她'在两个给定的位置之间,在这种情况下,玛丽亚(0)和彼得(34)之间。所以基本上我给两个位置并替换边界之间句子中的所有出现。我尝试过以下简单的代码,但似乎substr_replace函数不允许我这样做。有什么想法使它有效吗?

$sentence = "Maria went to London where he met Peter with his family.";
$clean = substr_replace($sentence, "he", "she", 0, 34);

2 个答案:

答案 0 :(得分:1)

您错误地使用 substr_replace() ,在这种情况下您不需要它。相反,请尝试使用str_replace()substr()的组合:

$sentence = "Maria went to London where he met Peter with his family.";
$clean = str_replace(' he ', ' she ', substr($sentence, 0, 34));
$clean .= substr($sentence, 34);

See demo

基本上,您要在he的指定子网上用she替换$sentence,然后重新连接$sentence的其余部分。

请注意' he '' she '周围的空格。这是必要的,否则您将where替换为wshere

答案 1 :(得分:1)

编辑:马克让我意识到我误解了你的问题。但是我觉得你仍然觉得这个正则表达式很有用,所以我要留下我的答案,但是对于你的确切问题的答案,请看MarkM的答案。

如果你想用“她”这个词替换他所有的单词实例。以他自己的话来说我会​​做这样的事情。

$pattern = '/(\b)he(\b)/';
$replacement = '$1she$2';
$subject = 'Maria went to London where he met Peter with his family';

$newString = preg_replace($pattern, $replacement, $subject);

正则表达式基本上是说找到所有字母的实例'他'被有效的单词分隔符(\ b)包围,并将其替换为'她'被发现的单词分隔符所包围。

编辑:

<强> See It Run