只有在匹配整个字符串中的特定单词时才应替换模式

时间:2013-12-18 11:05:49

标签: php

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

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

我想要的是我想检查$ text是否包含' mee ',如果是,则用“”替换mee(即空格)。

我正在使用preg_replace,但很明显,它会搜索模式mee并将其替换为空格,即使$text具有meena。

简而言之,我只想在$text值不是meena时使用 PREG_REPLACE 或相关功能才能实现替换? 提前致谢

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

预期产量:“ma ma meenamiameenaùs” 似乎有一些编码问题,因为它不适用于meenaùs

3 个答案:

答案 0 :(得分:3)

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

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

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

的结尾

这是一个非常简单的替代方法,因此在不使用正则表达式的情况下更有效率。


好的,因为你已经改变了问题,新问题的答案将是:

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

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

答案 1 :(得分:2)

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

就是这样。

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

答案 2 :(得分:0)

您可以选择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/>";

    ?>

试试这个。