当前位置: 代码迷 >> PHP >> php给html文本关键字加超链接,求大神指导
  详细解决方案

php给html文本关键字加超链接,求大神指导

热度:380   发布时间:2016-04-28 18:53:56.0
php给html文本关键字加超链接,求大神指点。
给关键字加超链接我们一般会用正则去替换。
但是问题来了,图片里面的alt里面有关键字也被替换成有链接的了。还有原本有超链接的文本也被替换了。
如<a href="ss.html">电脑的使用</a>,关键字有电脑二字,这条本不该被替换的,结果也被替换了。
如<img alt="电脑配件" src="aa.jpg" />,关键字有电脑二字,这条本不该替换,结果电脑二字也被替换成有超链接的内容了。
<p>电脑可以提高工作效率</p> 注:希望“电脑”二字自动加超链接,如变成<p><a href="ss.html">电脑</a>可以提高工作效率</p> 
<a href="ss.html">电脑的使用</a>   注:不希望“电脑”二字加超链接
<img alt="电脑配件" src="aa.jpg" />  注:不希望电脑二字加超链接
求大神支招,给个思路也行。

------解决方案--------------------
给个思路
$s =<<< TXT
<p>电脑可以提高工作效率</p> 注:希望“电脑”二字自动加超链接,如变成<p><a href="ss.html">电脑</a>可以提高工作效率</p> 
<a href="ss.html">电脑的使用</a>   注:不希望“电脑”二字加超链接
<img alt="电脑配件" src="aa.jpg" />  注:不希望电脑二字加超链接
TXT;

$p = '/((?:^
------解决方案--------------------
>).*?)(电脑)([^<]*(?:<(?!\/a)
------解决方案--------------------
$))/is';
echo preg_replace($p, '$1【$2】$3', $s);
<p>【电脑】可以提高工作效率</p> 注:希望“【电脑】”二字自动加超链接,如变成<p><a href="ss.html">电脑</a>可以提高工作效率</p> 
<a href="ss.html">电脑的使用</a>   注:不希望“【电脑】”二字加超链接
<img alt="电脑配件" src="aa.jpg" />  注:不希望【电脑】二字加超链接
  相关解决方案