仅当模式与整个字符串中的特定单词匹配时,才应替换模式


pattern should be replaced only when it matches a particular word in the whole string

$text=" ma mee ma mee meena mia meenaùs";

$text是一个包含数百个单词的字符串,上面是一个简短的插图。

我想要的是我想检查$text是否包含"",如果是,而不是用" "(即空格)替换我。

我使用相同的preg_replace,但很明显,即使$text有 Meena,它也mee搜索模式并用空格替换它。

简而言之,我只想在$text值是我而不是Meena时才进行替换。如何使用PREG_REPLACE或相关功能来实现这一点?提前致谢

$text = preg_replace("mee","", $text);

预期产出:"玛玛米娜米娅米纳"似乎存在一些编码问题,因为它不适用于 Meenaùs

作为正则表达式,您将^mee$preg_replace一起使用,如下所示:

$text = preg_replace("/^mee$/","", $text);

^匹配字符串
的开头 $匹配字符串的末尾

但是,这是一个

非常简单的替代方法,因此不使用正则表达式可能会更有效。


好的,看到您更改了问题,新问题的答案将是:

$text = preg_replace("/'bmee'b/","", $text);

这应该与模式相匹配,mee它本身就是一个单词,而不是另一个单词的一部分。

if ($text == "mee")
    $text = " ";

就是这样。

如果要在多次

包含此单词的字符串中多次更改单词"mee",请使用 $text = preg_replace('/'bmee'b/', ' ', $text);

你可以

选择preg_matchpreg_replace的组合。

首先检查字符串中是否有完全匹配的文本:

    <?php
    $text=" ma mee ma mee meena mia";
    echo $text."<br/>";
    $key = "mee";
    $rep_text = "YES";
    $text = preg_replace("/'b".$key."'b/u", $rep_text, $text);
    echo $text."<br/>";
    ?>

试试这个。