php:使用str_replace();在某些情况下?

时间:2013-09-15 19:25:04

标签: php string str-replace

我的文字:

  

bob有message123,alice有消息

我想:

  

bob有newmessage,alice有newmessage

我目前的代码是:

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

但它变成了:

  

bob有newnewmessage,alice有newmessage

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

3 个答案:

答案 0 :(得分:1)

您可以随时使用preg_replace。

在这种情况下:

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

将替换message,message1,message2等。

答案 1 :(得分:0)

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

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

或使用多针:

$fullText = str_replace(array(' message1 ', ' message '), array(' newmessage ', ' newmessage '), $fullText);

答案 2 :(得分:0)

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

$fullText = 'bob have message1 and alice has message without 1.';
$fullText = strtr( $fullText, array(
    "message1" => "newmessage",
    "message" => "newmessage" ) );