中药方大全小图标
您当前的位置:首页 > 其他 > 网站日记

jiuhecai谈去掉内容中的超链接的方法

提示: 阅读权限:公开  来源:jiuhecai  作者:jiuhecai

帝国cms中,采集或者复制到的文章,需要去掉超链接。在采集的设置里,可以去掉;在编辑器里也可以去掉。

但是有时候忘记了,或者别的原因,没有处理好,那就需要事后补救处理了。今天早晨,临汾的天空非常晴朗。我们一起探讨下如何去掉超链。

首先考虑用php去除,使用帝国批量王,可以方便的把保存在数据库中的newstext字段取来,脱敏后,使用正则来替换掉。使用网上搜索到的正则狗仔的测试片段为:

<?php
$str='<address>
Written by <a href="mailto:webmaster@example.com">Donald Duck</a>.<br> 
Visit us at:<br>
Example.com<br>
Box 564, Disneyland<br>
USA
</address>';
echo preg_match('#<a[^>]*>(.*?)</a>#is',$str,$match);
print_r($match);
?>

执行结果为

1Array
(
    [0] => <address>
Written by <a href="mailto:webmaster@example.com">Donald Duck</a>
    [1] => 
Written by <a href="mailto:webmaster@example.com">Donald Duck
)

那么这个正则是有瑕疵的,碰见带a开头的标签,并且这个标签中恰好有a标签,那就翻船了。虽然这种情况罕见,但是有代码洁癖的程序员不能容忍。


容易知道,a标签后边,要么是个空格,要么是大于号,所以使用零宽断言,可以修正这个bug.

<?php
$str='<address>
Written by <a href="mailto:webmaster@example.com">Donald Duck</a>.<br> 
Visit us at:<br>
Example.com<br>
Box 564, Disneyland<br>
USA
</address>';
echo preg_match('#<a(?=[s>])[^>]*>(.*?)</a>#is',$str,$match);
print_r($match);
?>

执行结果为:

1Array
(
    [0] => <a href="mailto:webmaster@example.com">Donald Duck</a>
    [1] => Donald Duck
)

完美!

最终,在帝国批量王中,处理超级链接的核心代码为:

$r[newstext]=stripcslashes($r[newstext]);
$r[newstext]=preg_replace('#<a(?=[s>])[^>]*>(.*?)</a>#is','$1',$r[newstext]);
$r[newstext]=addslashes($r[newstext]);
$listtemp='newstext';


tags:
返回顶部
推荐资讯
视频:田纪钧讲关节不痛的秘密、膝关节拉筋法
视频:田纪钧讲关节不
白露到了,你还好吗?
白露到了,你还好吗?
尿疗与断食
尿疗与断食
给风疹反复发作女孩的药方(组图)
给风疹反复发作女孩的
相关文章
栏目更新
栏目热门
  1. 帝国cms全站搜索的分页格式如何修改-流程
  2. libreoffice7的命令大全
  3. 帝国cms插件之标题生成标题图片
  4. 帝国cms插件安装模板
  5. useragent两千条,爬虫专用
  6. 帝国cms插件如何兼容gbk和utf8
  7. 帝国cms插件之迅搜
  8. 帝国cms用户上传文件名的命名规则及修改方
  9. 帝国cms7.2函数大全
  10. 帝国cms代码片段备忘录