高级正则技巧PHP正则表达式过滤html标签属性(DEMO)

Posted PHP技术大全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高级正则技巧PHP正则表达式过滤html标签属性(DEMO)相关的知识,希望对你有一定的参考价值。

过滤html标签在php中可以有内置的函数了,但它过滤的太干净了,我们就整理了一下些利用正则来过滤指定html标签的例子,具体如下所示。 采集的时候有时候需要过滤掉多余的标签属性,比如 img标签过滤掉除了src属性之外的所有属性例如删除titile alt等属性以及一些脚的onclick属性等。 例如 过滤除了src之外的所有属性:

 
   
   
 
  1. $str= preg_replace('/\s(?!src)[a-zA-Z]+=[\'\"]{1}[^\'\"]+[\'\"]{1}/iu',' $str);

上面的实例代码是过滤掉除了src属性外的所有标签属性. 过滤设置过滤除了alt和src之外的所有属性 代码如下:

 
   
   
 
  1. $str = preg_replace('/\s(?!(src|alt))[a-zA-Z]+=[^\s]*/iu',' ', $str);

过滤所有html标签的属性的正则表达式:

 
   
   
 
  1. $str = preg_replace("/<([a-z]+)[^>]*>/i","",$str );

只过滤alt属性的正则表达式:

 
   
   
 
  1. (\s)alt=[^\s]*

过滤所有html标签的属性的正则表达式:

 
   
   
 
  1. $search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

  2. "'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 标记

  3. "'([\r\n])[\s]+'", // 去掉空白字符

  4. "'&(quot|#34);'i", // 替换 HTML 实体

  5. "'&(amp|#38);'i",

  6. "'&(lt|#60);'i",

  7. "'&(gt|#62);'i",

  8. "'&(nbsp|#160);'i"

  9. ); // 作为 PHP 代码运行

  10. $replace = array ("","","\\1","\"","&","<",">"," ");

  11. $html = preg_replace($search, $replace, $html);



给猿哥打call,赚点零花钱,顺便自己也可以领个红包。

觉得麻烦?

可以直接copy下面的吱口令打开支付宝马上领取:


【支付宝邀你瓜分10亿现金红包啦!红包天天都能领,周五周六及双十二期间最高可达1212元】红包可在实体门店付款时抵扣#吱口令#长按复制此消息,打开支付宝就能领取!AS20DB884N


以上是关于高级正则技巧PHP正则表达式过滤html标签属性(DEMO)的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式替换 PHP 中的 html src 属性

java正则表达式过滤html标签(转)

正则表达式高级技巧及实例详解

正则表达式和 PHP - 从 img 标签中隔离 src 属性

java正则表达式过滤html p标签

php正则表达式匹配html标签之外