Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-在句子的两个位置之间搜索和替换_Php_Regex - Fatal编程技术网

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

PHP-在句子的两个位置之间搜索和替换,php,regex,Php,Regex,我试图在两个给定的位置之间用“她”来代替“他”,在这个例子中是在Maria(0)和Peter(34)之间。基本上,我给出了两个位置,替换了句子中所有出现在边界之间的地方。我尝试了以下简单代码,但substr_replace函数似乎不允许我这么做。有什么办法让它发挥作用吗 $sentence = "Maria went to London where he met Peter with his family."; $clean = substr_replace($sentence, "he", "

我试图在两个给定的位置之间用“她”来代替“他”,在这个例子中是在Maria(0)和Peter(34)之间。基本上,我给出了两个位置,替换了句子中所有出现在边界之间的地方。我尝试了以下简单代码,但substr_replace函数似乎不允许我这么做。有什么办法让它发挥作用吗

$sentence = "Maria went to London where he met Peter with his family.";
$clean = substr_replace($sentence, "he", "she", 0, 34);
您使用不正确,在这种情况下,您不需要它。相反,请尝试使用和的组合:

本质上,您是在指定的
$SENTURE
子序列上用
she
替换
he
,然后将
$SENTURE
的其余部分重新连接起来


注意
'he'
'she'
周围的空格。这是必要的,因为否则您会将
where
替换为
wshere
编辑:马克让我意识到我误解了您的问题。然而,我觉得你可能仍然觉得这个正则表达式很有用,所以我将留下我的答案,但要想得到你确切问题的答案,请看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);
正则表达式模式基本上是说,找到所有字母“he”的实例,并用有效的分词符(\b)包围,然后用“she”替换,并用找到的分词符包围

编辑:


substr\u replace的文档将向您显示它不需要那么多参数。只需制作子字符串并对其进行替换,然后将整个子字符串重新组合在一起。位置0和34真的重要吗?或者你会更高兴看到“Maria和Peter之间的替换”吗?谢谢,@developerwjk我已经找到了不同的PHP函数,但是我有点迷路了,因为这是我第一次处理正则表达式。@zx81是的,我使用的是位置数组,所以我不能使用名称。这将替换所有出现的
he
。我相信OP只想“在一个句子的两个位置之间”进行替换。@MarkM你是对的,我误解了这个问题。谢谢你指出这一点。谢谢echochamber,但是Mark是正确的,我需要用位置来指定边界,以便只在它们之间替换。非常感谢Mark,这正是我要寻找的,因为这只是一个示例,但我将有一些位置数组,以便确定在哪里进行替换。
$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);