基本思路:建立词条,存储于数据库中,从数据库中查找词条名称与文章中的字符进行对比,将含有该词条的字符替换成含有链接的词条文字
获取文章字符:$str
获取数据库中的词条:$baike=$baikeObj->query('','','name');
$content="";
foreach ($baike as $key => $value) {
获取词条名称
$citiao=$value['name'];
拼接词条链接
$link="http://www/citiao/id/".$value['id'];
拼接词条url标签
$url = "<a href=\"$link\"\">$citiao</a>";
替换规则
$regEx = '\'(?!((<.*?)|(<a.*?)))('.$citiao.')(?!(([^<>]*?)>)|([^>]*?</a>))\'s';
获得替换后的文章
$str = preg_replace($regEx, $url, $str);
}
不过感觉这种方法效率不高,少的话还可以,词条增多时还需要做进一步的优化