现在很多站点对于外网的链接打开会提醒用户离开该站点,php如何将a标签的url地址进行外链检测安全提醒?
网友回复
将html文档中所有外部链接地址的href更换成本地的检查地址check.php?url=,代码如下:
<?php function change_a_url($content = "") { $pregRule = "/<[a|A].*?href=[\'|\"](.*?)[\'|\"].*?>(.*?)<\/[a|A]>/"; $content = preg_replace($pregRule, '<a href="check.php?url=${1}">${2}</a>', $content); return $content; } $content = '什么,<a href="http://baidu.com">点击打开外链</a>,第二个链接<a href="http://baidu.com">点击打开外链</a>没了'; $newct = change_a_url($content); var_dump($newct);在check.php页面中提醒用户即将离开本站。
如何担心url需要编码可以使用preg_replace_callback方法,代码如下:
,<?php function change_a_url($matches) { return "<a href=".urlencode($matches[1]).">".$matches[2]."</a>"; } $content = '什么,<a href="http://baidu.com">点击打开外链</a>,第二个链接<a href="http://baidu.com">点击打开外链</a>没了'; echo preg_replace_callback( "/<[a|A].*?href=[\'|\"](.*?)[\'|\"].*?>(.*?)<\/[a|A]>/", "change_a_url", $content); ?>