首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中不带ALT属性的IMG标签的否定查找preg_match_all

PHP中不带ALT属性的IMG标签的否定查找preg_match_all
EN

Stack Overflow用户
提问于 2013-02-15 04:28:17
回答 2查看 1.2K关注 0票数 0

我正在尝试查找不包含alt属性的img标记,以便修复它以进行W3C验证。

我尝试使用负面的环视语法:

代码语言:javascript
复制
preg_match_all('@<img[^>]*?(?!alt=)[^>]*>@', $text, $matches);

不幸的是,它没有返回任何东西,而肯定有不带alt属性的img标签。

我认为问题出在负向查找中,但例如我使用:

代码语言:javascript
复制
preg_match_all('@<img[^>]+?http:\/\/(?!mysite\.com)[^>]*?>@', $text, $matches);

从外部资源中搜索图像,它工作得很好。

知道第一个表达式有什么问题吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-15 05:09:46

最后,我找到了可行的解决方案:

代码语言:javascript
复制
preg_match_all('@<img(?:(?!alt=).)*?>@', $text, $matches);

感谢你的贡献。

票数 2
EN

Stack Overflow用户

发布于 2013-02-15 04:52:15

使用前瞻语法适用于第一个语法

代码语言:javascript
复制
preg_match_all('@<img[^>]*?(?=alt=)[^>]*>@', $text, $matches);

这里的$matches将只包含带有alt的img。

代码语言:javascript
复制
<?php
$str = <<<EOF
<html>
  <body>
    hello
    <img src="withalt" alt="hi"/>asdf
    <img src="noalt" />
    <img src="withalt2" alt="blah" />
  </body>
</html>
EOF;

if (preg_match_all('@<img[^>]*?(?=alt=)[^>]*>@', $str, $matches)) {
   echo "matches\n";
   print_r($matches);
}

?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14883459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档