给文章中的指定关键字加链接,已经有链接的除外,正则怎么写?
如:
今天是个好日子,<a href="1.htm">今天</a>天晴。要求把 今天 加上链接:hao.htm希望的结果是:
<a href="hao.htm">今天</a>是个好日子,<a href="1.htm">今天</a>天晴。今天的天晴就是不替换了,因为已经有链接了,已有链接地址中含有的关键字也不替换。

解决方案 »

  1.   

    >>今天的天晴就是不替换了应该是今天天晴的今天就不替换了
      

  2.   

    <a href="#b"><span onclick="location.href='#c'">sd</span> sdssdsd</a>
      

  3.   

    其实也不用正则,直接把关键字替换成<span onclick="location.href='链接'">关键字</span>
      

  4.   

    思路是这样:
    第一次匹配出所有的“今天”,用<a>标签替换掉,
    第二次匹配出两层嵌套的<a>标签,去掉里面的一层<a>标签,
      

  5.   

    $kword = '今天';
    $part = '/'.$kword.'[^<\/a>]/is';
    preg_replace($part, '<a href="hao.htm">'.$kwod.'</a>',  $s); //$s 是你的那篇文章中文匹配要注意编码统一。
      

  6.   

    给个参考的正则,我没调试过,麻烦你调试一下把结构告诉我哈^_^$text = preg_replace('/今天/ims', '\<a href="hao.html"\>今天\</a\>', $text);
    $text = preg_replace('/(\<a\s+[^>]*?\>.*?\)<a href="hao.html"\>今天\</a\>(.*?\</a\>)/ims', '$1今天$2', $text);
      

  7.   

    谢谢,不过这两个正则,都不是很准确。
    第一个类似:<a href="1.htm">今天是星期天</a>
    就不适用了。
    第二个也没有考虑到类似情况。另外,还有<a alt="今天">这种标签属性的关键字也是不用替换的。
      

  8.   

    目前想到一个办法:
    1、利用<tag >标签正则先分割内容;
    2、对分割的文本内容进行处理;
    3、再将分割的内容进行连接。还有更好的办法吗?能一句正则搞定吗?