1

我的文字:

bob 有 message123 并且 alice 有 message

我想要:

鲍勃有新消息,爱丽丝有新消息

我目前的代码是:

$fullText= str_replace("message123", "newmessage", $fulltext);
$fullText= str_replace("message", "newmessage", $fulltext);

但它变成:

鲍勃有新消息,爱丽丝有新消息

  • 'new' 被重复,因为 str_replace(); 搜索整个文本并再次查找替换。
  • 是否可以不替换已经替换的文本。
4

3 回答 3

1

你总是可以使用 preg_replace。

在这种情况下:

$fullText=preg_replace("/\bmessage[0-9]*/", "newmessage", $fullText);

它将替换消息,消息1,消息2等。

于 2013-09-15T19:35:27.267 回答
0

对于最简单的解决方案,您可以添加空格:

$fullText= str_replace(" message1 ", " newmessage ", $fulltext);
$fullText= str_replace(" message ", " newmessage ", $fulltext);

或使用多针:

$fullText = str_replace(array(' message1 ', ' message '), array(' newmessage ', ' newmessage '), $fullText);
于 2013-09-15T19:36:56.270 回答
0

使用 strtr() 函数——它不会再次传递它已经替换的东西:

$fullText = 'bob have message1 and alice has message without 1.';
$fullText = strtr( $fullText, array(
    "message1" => "newmessage",
    "message" => "newmessage" ) );
于 2013-09-15T20:03:13.120 回答