PHP str_replace;检查更多部件

时间:2017-02-20 00:06:47

标签: php string replace str-replace

假设我有以下代码:

$string = "Hello! This is a test. Hello this is a test!"

echo str_replace("Hello", "Bye", $string);

这会将Hello中的所有$string替换为Bye。我怎么能...排除!之后Hello的所有位置。

意思是,我想要这个输出:Hello! This is a test. Bye this is a test!

php中有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

使用具有特定正则表达式模式的preg_repalce函数的解决方案:

$string = "Hello! This is a test. Hello this is a test!";
$result = preg_replace("/Hello(?!\!)/", "Bye", $string);

print_r($result);

输出:

Hello! This is a test. Bye this is a test!

(?!\!) - 前瞻性否定断言,只有在Hello字后面没有'匹配时才会匹配!{'

答案 1 :(得分:1)

你需要一个正则表达式:

echo preg_replace("/Hello([^!])/", "Bye$1", $string);

[]是一个字符类,^表示NOT。所以Hello后面没有!。在[{1}}中捕获()之后的!,以便您可以在替换为Hello(第一个捕获组)中使用它。