有一个文本,例如:
> This is a Car
以及动态标签列表。例如:
c, car
预期结果是经过处理后得到的:
This is a <a href='car.ly?search=car'>Car</a>
所以:
我已经测试了几种解决方案,但没有成功。处理此案的正确方法是什么?如何用正确链接到搜索结果的链接替换标记?
答案 0 :(得分:0)
据我所知,您可能想使用preg_replace_callback()
:
// A test string & some tags
$str = 'This is a Car c ar';
$tags = [ 'c', 'AR', 'car' ];
// sort tags by length
usort($tags, function ($a, $b) { return strlen($b)-strlen($a); });
// Then, replace tags one per one
foreach ($tags as $t) {
// Will replace tag between whitespaces or start/end of string
$str = preg_replace_callback('/(?<=\s|^)' . $t . '(?=\s|$)/i', function ($matches) {
return '<a href="' . strtolower($matches[0]) . '.ly?search=' . strtolower($matches[0]) . '">' . $matches[0] . '</a>';
}, $str);
}
输出:
<!-- echo $str; -->
This is a <a href="car.ly?search=car">Car</a> <a href="c.ly?search=c">c</a> <a href="ar.ly?search=ar">ar</a>