Heim >Backend-Entwicklung >PHP-Tutorial > 想要个正则表达式,匹配所有<img>标签,该如何处理

想要个正则表达式,匹配所有<img>标签,该如何处理

PHP中文网
PHP中文网Original
2017-03-30 14:43:492592Durchsuche

  想要个正则表达式,匹配所有 想要个正则表达式,匹配所有<img>标签,该如何处理 标签
想要一个正则表达式,匹配所有 想要个正则表达式,匹配所有<img>标签,该如何处理 标签,并且这个标签里SRC属性不能含有logo这个单词,包含这个单词的不匹配。
谢谢。

<pre class="brush:php;toolbar:false">
<?php
$string="adsfasdfa<img src=&#39;http://avatar.profile.csdn.net/3/6/F/2_jimx102.jpg&#39;>fasdfadsfadsf";
preg_match_all(&#39;/<img(?!.*?logo).*>/&#39;,$string,$matches);
print_r($matches);
?>
<img(?!.*?logo).*>

<img - 开头数据
(?! - 负向预查后面的字符
.*?贪婪匹配logo前面所有数据
(?!.*?logo) - 意为匹配所有不包含logo
.*> 则是 匹配所有换行前的>      -  此处不使用 .*? 进行贪婪主要是为了避免 alt="abc>" 这样中间出现> 字符的情况

不过上面会出现个特例情况

例如

<img src="abc.jpg" alt="logo图片">  alt提示包含logo
<img src="test.jpg" logo=1 >  自定义属性


如果考虑这些情况,正则可以再细化到src位置

<img(.*?)(src)=\"(?!.*?logo).*>

-----解决方案------

<img(?!.*?logo).*>

  <img - 开头数据
 (?! - 负向预查后面的字符
 .*?贪婪匹配logo前面所有数据
 (?!.*?logo) - 意为匹配所有不包含logo
 .*> 则是 匹配所有换行前的>      -  此处不使用 .*? 进行贪婪主要是为了避免 alt="abc>" 这样中间出现> 字符的情况

 不过上面会出现个特例情况

 例如

  <img src="abc.jpg" alt="logo图片">  alt提示包含logo
  <img src="test.jpg" logo=1 >  自定义属性


 如果考虑这些情况,正则可以再细化到src位置

  <img(.*?)(src)=\"(?!.*?logo).*>

以上就是 想要个正则表达式,匹配所有a1f02c36ba31691bcfe87b2722de723b标签,该如何处理 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn