【紧急求救】正则或类、PHP替换非本站域名

newkevin 2014-04-16 10:56:18
一个论坛程序,将用户帖子中的链接(*非本站的域名下的链接)全部替换成指定连接


例如源 代码:


-------------------------------------------------

<a href="http://www.AAA.com/" target="_blank">AAAAA</a>
<a href="http://wer.123.com/" target="_blank">BBBBB</a>
<a href="http://adf.h4.456.com/" target="_blank">CCCCC</a>
<a href="http://wer.AAA.com/" target="_blank">DDDDD</a>
<a href="http://asdgwre.wer.222.789.com/" target="_blank">EEEEE</a>
<a href="http://fadsf.543.com/" target="_blank">FFFFF</a>
<a href="http://234r.231.com/" target="_blank">GGGGG</a>


-----------------------------------------------------------
替换成

-----------------------------


<a href="http://www.AAA.com/" target="_blank">AAAAA</a>
<a href="#" target="_blank">BBBBB</a>
<a href="#" target="_blank">CCCCC</a>
<a href="http://wer.AAA.com/" target="_blank">DDDDD</a>
<a href="#" target="_blank">EEEEE</a>
<a href="#" target="_blank">FFFFF</a>
<a href="#" target="_blank">GGGGG</a>


------------------------


需求:将非AAA.com域名下的链接全部替换成“#”井号

以下代码可以替换所有链接为井号,但是不能分辨是否为AAA.COM
echo preg_replace("/(?<=href=)([^\>]*)(?=\>)/i","javascript:;", "<a href='www.csdn.net'>你好,点这里看看</a><a href='www.jb51.net'>你好,点这里看看</a>");

求正则大神帮忙哈 很着急 一上午没弄出来
...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
嘻哈大咖秀 2014-04-16
  • 打赏
  • 举报
回复
echo preg_replace_callback("/<a href=\"http\:\/\/[^.]*[^A]+\.com\/\" target=\"_blank\">([^<]+)<\/a>/is",function($r) { return strip_tags($r[0]); },$str);
newkevin 2014-04-16
  • 打赏
  • 举报
回复
替换成这样滴 谢谢哈


<a href="http://www.AAA.com/" target="_blank">AAAAA</a>
BBBB
CCCCC
<a href="http://wer.AAA.com/" target="_blank">DDDDD</a>
EEEEE
FFFFF
GGGGG
newkevin 2014-04-16
  • 打赏
  • 举报
回复
上面大神 真厉害啊 @microlab2009 如果非本站链接就把链接删除的话 应该怎么写呢
嘻哈大咖秀 2014-04-16
  • 打赏
  • 举报
回复
嘻哈大咖秀 2014-04-16
  • 打赏
  • 举报
回复
$str = <<<str
<a href="http://www.AAA.com/" target="_blank">AAAAA</a>
<a href="http://wer.123.com/" target="_blank">BBBBB</a>
<a href="http://adf.h4.456.com/" target="_blank">CCCCC</a>
<a href="http://www.wer.AAA.com/" target="_blank">DDDDD</a>
<a href="http://asdgwre.wer.222.789.com/" target="_blank">EEEEE</a>
<a href="http://fadsf.543.com/" target="_blank">FFFFF</a>
<a href="http://234r.231.com/" target="_blank">GGGGG</a>
str;

echo preg_replace_callback("/http\:\/\/[^.]*[^A]+\.com\//is",function($r) { return str_replace($r[0], "#", $r[0]); },$str);
newkevin 2014-04-16
  • 打赏
  • 举报
回复
感谢大神的帮助 万分感谢哈~~~
嘻哈大咖秀 2014-04-16
  • 打赏
  • 举报
回复
1.<?php $str = <<<str <a href="http://www.AAA.com/" target="_blank">AAAAA</a> <a href="http://wer.123.com/" target="_blank">BBBBB</a> <a href="http://adf.h4.456.com/" target="_blank">CCCCC</a> <a href="http://www.wer.AAA.com/" target="_blank">DDDDD</a> <a href="http://asdgwre.wer.222.789.com/" target="_blank">EEEEE</a> <a href="http://fadsf.543.com/" target="_blank">FFFFF</a> <a href="http://234r.231.com/" target="_blank">GGGGG</a> http://234r.231.com str; echo preg_replace_callback("/(?<=href\=\")http\:\/\/[^.]*[^A]+\.com\//is",function($r) { return str_replace($r[0], "#", $r[0]); },$str); ?> 2.echo preg_replace_callback("/<a href=\"http\:\/\/[^.]*[^A]+\.com\/\"[^>]*>([^<]+)<\/a>/is",function($r) { return strip_tags($r[0]); },$str); 都只是改改正则就可以了 还是得自己去先把正则熟悉熟悉
newkevin 2014-04-16
  • 打赏
  • 举报
回复
感谢microlab2009 但是在应用中我测试了一下发现几个问题 1:将非本站链接替换成井号,但是非链接也给替换了哦! 例如:<a href="www.163.com">和www.163.com(字符串非链接)全部都给替换成#井号了 2:删除链接 <a href="http://wer.123.com/" target="_blank" style="color:#f60;">BBBBB</a> 和 <a href="http://wer.123.com/">BBBBB</a> 处理上出现错误,能修改第一个不能修改第二个。 望大神帮帮忙哈,无限的感谢已涌向心口........

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧