我需要preg_replace文本的某些部分

时间:2019-05-12 23:55:17

标签: php

我需要替换部分文本,例如:

TreeMap

所以可以说我需要用

替换“这辆车”
timestamp

没问题

"I like this car, but that car is good"

这将替换所有匹配项。

现在我需要用

替换尚未下划线的单个“汽车”
"<u>this car</u>".

那就是我堆叠的地方。

那是怎么回事,我正在做第一次更换并得到文本:

str_replace('this car','<u>this car</u>',$line)

如果我愿意

<b>car</b>

我将以这个结尾:

"I like <u>this car</u>, but that car is good"

这不好,因为第一个比赛用车已加下划线。

请提出建议

2 个答案:

答案 0 :(得分:1)

您可以使用strtr来完成此工作,因为它将首先替换较长的匹配项,然后替换较短的匹配项,而忽略它已经进行替换的所有内容。例如:

$string = "I like this car, but that car is good";
echo strtr($string, array('this car' => '<u>this car</u>', 'car' => '<b>car</b>'));

输出:

I like <u>this car</u>, but that <b>car</b> is good

Demo on 3v4l.org

答案 1 :(得分:-1)

尝试:

Rigidbody