给文章中的指定关键字加链接,已经有链接的除外,正则怎么写?
如:
今天是个好日子,<a href="1.htm">今天</a>天晴。要求把 今天 加上链接:hao.htm希望的结果是:
<a href="hao.htm">今天</a>是个好日子,<a href="1.htm">今天</a>天晴。今天的天晴就是不替换了,因为已经有链接了,已有链接地址中含有的关键字也不替换。
如:
今天是个好日子,<a href="1.htm">今天</a>天晴。要求把 今天 加上链接:hao.htm希望的结果是:
<a href="hao.htm">今天</a>是个好日子,<a href="1.htm">今天</a>天晴。今天的天晴就是不替换了,因为已经有链接了,已有链接地址中含有的关键字也不替换。
第一次匹配出所有的“今天”,用<a>标签替换掉,
第二次匹配出两层嵌套的<a>标签,去掉里面的一层<a>标签,
$part = '/'.$kword.'[^<\/a>]/is';
preg_replace($part, '<a href="hao.htm">'.$kwod.'</a>', $s); //$s 是你的那篇文章中文匹配要注意编码统一。
$text = preg_replace('/(\<a\s+[^>]*?\>.*?\)<a href="hao.html"\>今天\</a\>(.*?\</a\>)/ims', '$1今天$2', $text);
第一个类似:<a href="1.htm">今天是星期天</a>
就不适用了。
第二个也没有考虑到类似情况。另外,还有<a alt="今天">这种标签属性的关键字也是不用替换的。
1、利用<tag >标签正则先分割内容;
2、对分割的文本内容进行处理;
3、再将分割的内容进行连接。还有更好的办法吗?能一句正则搞定吗?