PREG_MATCH问题

发布于 2024-11-26 22:08:02 字数 356 浏览 0 评论 0原文

preg_match("/<img onClick='this\.style\.maxWidth=\"490px\"; this\.style\.maxHeight=\"490px\";
this\.style\.cursor=\"default\";' style='cursor: pointer; display: block; float: left; max-width: 
490px; max-height: 160px;' src='(.)+'><br style='clear: left;'>/",$CONTENT,$MATCHES);
print_r($MATCHES);

为什么没有获取到图片源呢?

preg_match("/<img onClick='this\.style\.maxWidth=\"490px\"; this\.style\.maxHeight=\"490px\";
this\.style\.cursor=\"default\";' style='cursor: pointer; display: block; float: left; max-width: 
490px; max-height: 160px;' src='(.)+'><br style='clear: left;'>/",$CONTENT,$MATCHES);
print_r($MATCHES);

Why doesn't this get the image source?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

考虑编写 src='(.+)' 而不是 src='(.)+'

Consider writing src='(.+)' instead of src='(.)+'

划一舟意中人 2024-12-03 22:08:02

您可以跳过很多内容,只需说

preg_match("/<img.*?src='([^']*)'/i", $content, $matches);

$matches[1] 将是 src url

(在评论失控之前:这是基于问题中的原始模式。它确实不匹配双引号属性,因为原始模式也不匹配,而且它也不是一个通用的解决方案,它会寻找 1 个格式良好的 img 标签,仅此而已)


除此之外:

  • 内联 CSS?
  • 内联事件处理程序?!
  • 单引号围绕属性?! 哎呀!那个是错的!抱歉,

这些都不好!

You can skip a lot of that stuff and just say

preg_match("/<img.*?src='([^']*)'/i", $content, $matches);

$matches[1] will be the src url

(Before the comments get out of hand: This is based on the original pattern in the question. it doens't match double-quoted attributes, because the original pattern didn't either. And it's not a general solution either. It'll look for 1 well-formed img tag, and that's it)


Other than that:

  • Inline CSS?!
  • Inline event handlers?!
  • Single quotes around attributes?! whoops! Wrong about that one! Apologies

None of that is good!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文