MissHu

杂记

  • 首页
  • 微语
  • 登录
    • php 去除图片以及DIV的width、height、style,作用:手机网站调用详情

      1.去掉图片的宽高,去掉DIV的style样式

      <?php
      /*PHP正则提取图片img标记中的任意属性*/
      $str = '<div style="margin: 0px auto; width: 740px;"> <p><img alt="" src="/images/upload/Image/manmiao_0001.jpg" /></p></div>';
      //去掉图片宽度
      $search = '/(<img.*?)width=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
      //去掉图片高度
      $search1 = '/(<img.*?)height=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
      $content = preg_replace($search,'$1$3',$str);
      $content = preg_replace($search1,'$1$3',$content);
      //去掉div的style
      $content = preg_replace("/style=.+?['|\"]/i",'',$content);//这种方式很简单易懂,但因为太简单,不知道有没有漏洞,否则去掉图片的宽高也用这种方法写了
      highlight_string($content);
      ?>

      2.如何用php正则去掉得到img标签中的 属性

      请问php正则如何去掉得到img标签中的 border属性,例如:<img src="test.gif" border="0" alt="test1" />   替换后的  <img src="test.gif" alt="test1" />

       

      一开始我就想到要 只去掉border="" 很简单的写出

      1
      $search = '/(<img.*?)(border=".*?")([^>]+\/?>)/is';
      它只能去掉形如<img src="囧1" border="囧2" />这样的border,一般的 <img>标签会有这样几种含有boder的情况

          <img src="囧1" border="囧2" />
          <img src='囧1' border='囧2' />
          <img src=囧1 border=囧2 />
      也就是有符合w3c标准的双引号,还有不符合w3c标准单引号,无引号的情况。想要把他们的border也去掉

      于是改成以下的正则:

      1
      $search = '/(<img.*?)border=(["\']).*?\2([^>]+>)/is';
      此正则只能解决有单、双引号的border,暂时没有解决无引号的

       

      回去翻了以前的文章《获取<a>链接标签。从Snoopy类中提取函数》

      看了正则还支持三目运算: (xxx)? (?(分组号) yyy|zzz) 如果xxx不为空 执行yyy,否则执行zzzz

      于是改成了此完美最终版本:

      1
      $search = '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
      终于解决问题了,上一个php例子吧

       

      01
      <?php
      02
      //php过滤img标签中的 border属性
      03
      $str = '
      04
      1、<img src="test1.jpg" border="1" />
      05
      2、<img src=\'test2.jpg\' border=\'2\' />
      06
      3、<img src=test3.jpg border=3 />
      07
      ';
      08
      $search = '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
      09
      $r = preg_replace($search,'$1$3',$str);
      10
      highlight_string($r);
      11
       
      12
      //输出:
      13
      /*
      14
      1、<img src="test1.jpg"  />
      15
      2、<img src='test2.jpg'  />
      16
      3、<img src=test3.jpg />
      17
      */
      18
      ?>
      过滤后只是多了一个空格,也不要紧了,已经解决问题了。

       

      enenba原创,转载请保留出处:http://enenba.com/?post=164

      3.PHP正则提取或替换img标记属性

      <?php

      02
       
      03
      /*PHP正则提取图片img标记中的任意属性*/
      04
      $str = '<center><img src="/uploads/images/20100516000.jpg" ><br />PHP正则提取或更改图片img标记中的任意属性</center>';
      05
       
      06
      //1、取整个图片代码
      07
      preg_match('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i',$str,$match);
      08
      echo $match[0];
      09
       
      10
      //2、取width
      11
      preg_match('/<img.+(width=\"?\d*\"?).+>/i',$str,$match);
      12
      echo $match[1];
      13
       
      14
      //3、取height
      15
      preg_match('/<img.+(height=\"?\d*\"?).+>/i',$str,$match);
      16
      echo $match[1];
      17
       
      18
      //4、取src
      19
      preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$str,$match);
      20
      echo $match[1];
      21
       
      22
      /*PHP正则替换图片img标记中的任意属性*/
      23
      //1、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg")
      24
      print preg_replace('/(<img.+src=\"?.+)(images\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/i',"\${1}uc/images/\${3}",$str);
      25
      echo "<hr/>";
      26
       
      27
      //2、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg",并省去宽和高
      28
      print preg_replace('/(<img).+(src=\"?.+)images\/(.+\.(jpg|gif|bmp|bnp|png)\"?).+>/i',"\${1} \${2}uc/images/\${3}>",$str);
      29
       
      30
      ?>

      4.清除html格式,去除html、css、js格式

      strip_tags($str) 去掉 HTML 及 PHP 的标记
      语法: string strip_tags(string str);
      传回值: 字串
      函式种类: 资料处理
      内容说明 :
      解析:本函式可去掉字串中包含的任何 HTML 及 PHP 的标记字串。若是字串的 HTML 及 PHP 标签原来就有错,例如少了大于的符号,则也会传回错误。而本函式和 fgetss() 有着相同的功能
       
      PHP去除html、css样式、js格式的方法很多,但发现,它们基本都有一个弊端:空格往往清除不了
      经过不断的研究,最终找到了一个理想的去除html包括空格css样式、js 的PHP函数。
       
      PHP清除html、css、js格式并去除空格的PHP函数
       
      function cutstr_html($string, $sublen)   
       {
        $string = strip_tags($string);
        $string = preg_replace ('/\n/is', '', $string);
        $string = preg_replace ('/ | /is', '', $string);
        $string = preg_replace ('/&nbsp;/is', '', $string);
       
        preg_match_all("/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/", $string, $t_string);  
        if(count($t_string[0]) - 0 > $sublen) $string = join('', array_slice($t_string[0], 0, $sublen))."…";  
        else $string = join('', array_slice($t_string[0], 0, $sublen));
       
        return $string;
       }
      解析:这个函数既有去除html标签、css样式、js、空格等格式的功能(格式化html文本)也有截取字符串的功能。

       
      htmlspecialchars 将特殊字元转成 HTML 格式
      语法: string htmlspecialchars(string string);
      传回值: 字串
      函式种类: 资料处理
      内容说明
      解析:本函式将特殊字元转成 HTML 的字串格式 ( &....; )。最常用到的场合可能就是处理客户留言的留言版了。
      & (和) 转成 &amp;
      " (双引号) 转成 &quot;
      < (小于) 转成 &lt;
      > (大于) 转成 &gt;
      此函式只转换上面的特殊字元,并不会全部转换成 HTML 所定的 ASCII 转换。

      使用范例
      <FORM ACTION='./../b'la>
      <H2>Restaurant Description<H2>
      Name of restaurant:
      <INPUT TYPE=text NAME="restname" VALUE="<?echo HTMLSpecialChars($restname); ?>">
      <!-- 变数 $restname 是酱子的 $restname="\"The White Horse\""; -->
      <BR>
      输入描述 (若您会 HTML,可直接使用): <BR>
      <TEXTAREA NAME="descript"><?echo HTMLSpecialChars($descript);?></TEXTAREA>
      <INPUT TYPE=submit>
      </FORM>

      htmlentities 将所有的字元都转成 HTML 字串
      语法: string htmlentities(string string);
      传回值: 字串
      函式种类: 资料处理
      内容说明
      解析:本函式有点像 htmlspecialchars() 函式,但本函式会将所有 string 的字元都转成 HTML 的特殊字集字串。不过在转换后阅读网页原始码的方面,会有很多困扰,尤其是网页原始码的中文字会变得不知所云,浏览器上看到的还是正常的。
      php 去除html标签 js 和 css样式 - 最爱用的一个PHP清楚html格式函数
      Function ClearHtml($content) { 
         $content = preg_replace("/<a[^>]*>/i", "", $content);  
         $content = preg_replace("/<\/a>/i", "", $content);  
         $content = preg_replace("/<div[^>]*>/i", "", $content);  
         $content = preg_replace("/<\/div>/i", "", $content);     
         $content = preg_replace("/<!--[^>]*-->/i", "", $content);//注释内容
         $content = preg_replace("/style=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/class=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/id=.+?['|\"]/i",'',$content);//去除样式    
         $content = preg_replace("/lang=.+?['|\"]/i",'',$content);//去除样式     
         $content = preg_replace("/width=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/height=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/border=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/face=.+?['|\"]/i",'',$content);//去除样式  
         $content = preg_replace("/face=.+?['|\"]/",'',$content);//去除样式只允许小写正则匹配没有带 i 参数
         return $content;
      }
      ————————————————
      版权声明:本文为CSDN博主「张广森」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/fgdfgasd/article/details/16964523
      « session和cookie的区别 | 全麦饼干»

      分类:代码      日期:18 Mar 2020

      MissHu 0 3621
    • 日历

    • 存档

      • 2022年4月(1)
      • 2021年7月(2)
      • 2021年6月(1)
      • 2020年6月(3)
      • 2020年3月(3)
      • 2020年1月(1)
    • 链接

浙ICP备15002971号 MissHu @ 2020