php给内容中的标签替换加上链接,但是只替换一次,防止因为标签a包含标签b导致重复替换

正文开始

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) ;

?>

查看源码

正文结束

PHP接口(interface)和抽象类(abstract) 宝塔环境php7.2报错Call to undefined function imagecreatefromwebp