php给内容中的标签替换加上链接,但是只替换一次,防止因为标签a包含标签b导致重复替换
比如以下例子
<?php
$str = '我们说的非洲鸵鸟它也应该是鸵鸟的一种场景品种,因为非洲鸵鸟的蛋比鸵鸟也蛋要大';
$tagsArray_ = ['鸵鸟','非洲鸵鸟'];
//tag、按长度倒序 保证先替换长名字的tag
$compareFunc = function ($a, $b) {
return strlen($b)-strlen($a);
};
usort($tagsArray_, $compareFunc);
foreach ($tagsArray_ as $tag_) {
$str = preg_replace_callback("/(<a href[^>]+>([^<]+)<\/a>)/i", function($match){
return '[base]'.base64_encode($match[0]) .'[/base]';
}, $str);
$str = preg_replace("/(?<!(>))(".$tag_.")+/", "<a href='https://dwsj.cc/tag/{$tag_}'>{$tag_}</a>", $str);
}
$str = preg_replace_callback("/\[base\]([^\[]+)\[\/base\]/i", function($match){
return base64_decode($match[1]);
}, $str);
print_r($str) ;
?>
查看源码