Php 当某个单词是或不是';用str_替换t本身

Php 当某个单词是或不是';用str_替换t本身,php,string,str-replace,Php,String,Str Replace,我试图用零替换字符串中的某个单词,但遇到了一个问题。如果某个单词紧挨着它自己,它就不会替换。我该如何解决这个问题?谢谢 $text1 = "text replace text replace text"; $text1 = str_replace(" replace "," ",$text1); $text2 = "text replace replace text"; $text2 = str_replace(" replace "," ",$text2); echo $text1; ec

我试图用零替换字符串中的某个单词,但遇到了一个问题。如果某个单词紧挨着它自己,它就不会替换。我该如何解决这个问题?谢谢

$text1 = "text replace text replace text";
$text1 = str_replace(" replace "," ",$text1);

$text2 = "text replace replace text";
$text2 = str_replace(" replace "," ",$text2);

echo $text1;
echo $text2;
实际结果

预期结果


附言:我也不想做类似str_replace(“replace”),“,$text2)的事情,因为“replace”左右的空格被去掉了,因为如果这个词是另一个词的一部分呢?然后不管怎样,它都会替换它,这是错误的。

编辑下面的评论我修改了stru_replace示例并添加了regex示例


str\u替换(不推荐)

检查语法是否有错误,但我想我没记错

然而,这很难编码,而且并非在所有情况下都可以复制


使用regex

探索未来之路:

我很生疏,但这应该可以:

$ret = 'test replace test replace replace dontreplace test';
$pattern = '/\breplace\b/i';
$ret = preg_replace($pattern,"",$ret);
var_dump($ret);

此regexp应该可以工作,可能需要进行一些调整:

$word = 'someWordToReplace';  
$resultString = preg_replace('/(?:(?<= )|(?<=\A))'.$word.'(?:(?= )|(?=\Z))/', '', $str);
$word='someWordToReplace';

$resultString=preg_replace('/(?:)(?先替换单词。然后替换多个空格,或者只能使用reg表达式。str_replace只能向前而不能向后跟踪regexps可以向前和向后查看,这样您就可以确定它是单词的一部分还是单独的单词。顺便说一句,我的英语很抱歉,请将一个空格移到您的末尾“替换”字符串是您所需要的全部。解决方案是您标记为正确的,这完全不必要。我认为这不是OP的100%解决方案?正如OP所说,她不想剥夺空间因为如果替换字符串是另一个单词的一部分该怎么办…谢谢。这应该足够了。这对
text replace text replace.
..有用吗?或者
text replace.
怎么样。通常我不会费心评论,但既然我们在做
如果
怎么办,我想为什么不行。有些事情告诉我它并没有像人们所希望的那样工作,因为有了所有你在里面的“环顾四周”和“向后看”的东西。@l'l现在它甚至可以与
replace
replace text replace一起工作,但是(!!)这就是为什么我写了关于调整的文章。现在,如果单词被简单空格或BOL/EOL包围,它就会起作用。你可以在我的解决方案中添加自定义单词分隔符尝试在最后一次替换的末尾加一个句号。嗯……明白我的意思吗?我可以整天坐在这里把它分开,但我真的有更好的事情要做。一般来说,当我花时间在我想问一个问题,希望有人能从中学到一些东西(有用).没有一个答案是完美的,把别人的东西挑出来是浪费时间的,特别是对于一个愚蠢的问题,比如这里问的问题。试着把它作为一种习惯添加进去separator@lL'L是一款愚蠢的android应用程序,有很多箭头xD 1个箭头作为答案,第二个箭头用于投票……stackoverflow应用程序的gui非常糟糕
str_replace(array(" replace "," replace ","  "),array(" "," "," "))
$ret = 'test replace test replace replace dontreplace test';
$pattern = '/\breplace\b/i';
$ret = preg_replace($pattern,"",$ret);
var_dump($ret);
$word = 'someWordToReplace';  
$resultString = preg_replace('/(?:(?<= )|(?<=\A))'.$word.'(?:(?= )|(?=\Z))/', '', $str);