如何用php正则去掉获得img标签中的 border属性

    请问php正则如何去掉获得img标签中的 border属性,譬喻:<img src="http://enenba.com/test.gif" alt="test1" />   替换后的  <img src="http://enenba.com/test.gif" alt="test1" />

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

$search = '/(<img.*?)(border=".*?")([^>]+\/?>)/is';

它只能去掉形如<img src="http://enenba.com/囧1" />这样的border,一般的 <img>标签会有这样几种含有boder的环境

    <img src="http://enenba.com/囧1" />

    <img src='http://enenba.com/囧1' />

    <img src=http://enenba.com/囧1 border=囧2 />

也就是有切合w3c尺度的双引号,尚有不切合w3c尺度单引号,无引号的环境。想要把他们的border也去掉

于是改成以下的正则

$search = '/(<img.*?)border=(["\']).*?\2([^>]+>)/is';

此正则只能办理有单、双引号的border,临时没有办理无引号的

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

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

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

$search = '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';

终于办理问题了,上一个php例子

<?php //php过滤img标签中的 border属性 $str = ' 1、<img src="http://enenba.com/test1.jpg" /> 2、<img src=http://enenba.com/\'test2.jpg\' border=http://enenba.com/\'2\' /> 3、<img src=http://enenba.com/test3.jpg border=3 /> '; $search = '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is'; $r = preg_replace($search,'$1$3',$str); highlight_string($r); //输出: /* 1、<img src="http://enenba.com/test1.jpg" /> 2、<img src='http://enenba.com/test2.jpg' /> 3、<img src=http://enenba.com/test3.jpg /> */ ?>

过滤后只是多了一个空格,也没干系了,已包办理问题了。

enenba原创,转载请保存出处:?post=164

end..

附件下载/演示源码:
【 remove-border.htm 】 9.81KB

上一篇: 如何去掉jiathis分享条中的“这是什么东西 jiathis”   |   下一篇:php利用strip_tags的完整去除所有html标签» 标签:

分享到: 更多

相关日志:

匹配一个<table>并过滤中间table

从《网页降噪助你晋升搜索引擎表示》来做php正文提取算法

正则用(?>…)实现固化分组提高效率

php截取字符串中的链接参数

PHP收罗类Snoopy伪造来历,IP

editplus 批量删除英文单词之间的空格

正则高级能力之三目运算

常用数字类正则

如何用php正则表达式获得网页上所有的链接

评论:

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

thisisgame 2012-08-14 11:58
 

正则
没有用心去学……
所以不会用

 

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

enenba 2012-08-14 12:13

不必然要会正则。你用别人写好的就行了。

 

 

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

Sogei 2012-05-21 05:50
 

多谢了~~大神真锋利 ^_^

   

 

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

enenba 2012-05-19 18:49
 

在Emlog的模板中本来是这样输出正文内容,
<?php echo $log_content; ?>

可以改成这样去掉图片的border:
<?php
$search = '/(<img.*?)border=(["\'])?.*?(?(2)\2|\s)([^>]+>)/is';
echo preg_replace($search,'$1$3',$log_content);
?>

 

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

sogei 2012-05-19 23:53

小白再求解,输出正文内容的代码我已经改成了<?php get_content_img($value['content']); ?>
这个是获取日志缩略图的,不影响成果的前提下怎么改

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7874.html