php 去除图片以及DIV的width、height、style,作用:ecshop手机网站调用商品详情

来源:互联网 发布:无尽杀戮网络社区 编辑:程序博客网 时间:2024/05/22 06:31

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


<?php
/*PHP正则提取图片img标记中的任意属性*/
$str = '<div style="margin: 0px auto; width: 740px;"> <p><img width="748" height="444" 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的情况

  1.     <img src="囧1" border="囧2" />
  2.     <img src='囧1' border='囧2' />
  3.     <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 = '
041、<img src="test1.jpg" border="1" />
052、<img src=\'test2.jpg\' border=\'2\' />
063、<img src=test3.jpg border=3 />
07';
08$search '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
09$r = preg_replace($search,'$1$3',$str);
10highlight_string($r);
11 
12//输出:
13/*
141、<img src="test1.jpg"  />
152、<img src='test2.jpg'  />
163、<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" height="120" width="120"><br />PHP正则提取或更改图片img标记中的任意属性</center>';
05 
06//1、取整个图片代码
07preg_match('/<\s*img\s+[^>]*?src\s*=\s*(\'|\")(.*?)\\1[^>]*?\/?\s*>/i',$str,$match);
08echo $match[0];
09 
10//2、取width
11preg_match('/<img.+(width=\"?\d*\"?).+>/i',$str,$match);
12echo $match[1];
13 
14//3、取height
15preg_match('/<img.+(height=\"?\d*\"?).+>/i',$str,$match);
16echo $match[1];
17 
18//4、取src
19preg_match('/<img.+src=\"?(.+\.(jpg|gif|bmp|bnp|png))\"?.+>/i',$str,$match);
20echo $match[1];
21 
22/*PHP正则替换图片img标记中的任意属性*/
23//1、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg")
24print preg_replace('/(<img.+src=\"?.+)(images\/)(.+\.(jpg|gif|bmp|bnp|png)\"?.+>)/i',"\${1}uc/images/\${3}",$str);
25echo "<hr/>";
26 
27//2、将src="/uploads/images/20100516000.jpg"替换为src="/uploads/uc/images/20100516000.jpg",并省去宽和高
28print 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;
}


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 瑜伽后弯后腰疼怎么办? 吃了大蒜肝痛怎么办 练瑜伽前躯不行怎么办 月子里碰冷水了怎么办 月子手碰凉水了怎么办 月子里碰了冷水怎么办 顺产后下面会痛怎么办 产后肚子瘦不下来怎么办 出月子后臀部很疼怎么办 做月子时臀部疼怎么办 月子臀部大腿疼困怎么办 产后抱孩子腰疼怎么办 剖腹产后5年小肚子很大怎么办 压力大工作忙瘦了怎么办? 哺乳乳房一大一小怎么办 哺乳期乳房一大一小怎么办 上班之后奶少了怎么办 出了月子还流恶露怎么办? 剖腹产2年刀疤痒怎么办 刨宫产6天伤口痒怎么办 脸的皮肤油油的怎么办 狗狗子宫蓄脓怎么办 刮宫后子宫壁薄怎么办 产妇有痔疮怎么办很疼 二胎着床在剖腹产切口怎么办 刨腹产3月后怀孕怎么办 破腹产两年了肚子还是很大怎么办 抛妇产后肚子大怎么办 破腹产后想大便怎么办 破腹产后肚子硬怎么办 在月子里同房了怎么办 胃变大凸出来了怎么办 坐完月子脊背疼怎么办 月子过后脊背疼该怎么办 怀孕的时候牙疼怎么办 练瑜伽后弯腰疼怎么办 练完瑜伽腰椎疼怎么办 瑜伽开髋动作受伤怎么办 才学瑜伽教培上课紧张怎么办 瑜伽馆不给退费怎么办 脚运动后酸痛该怎么办