preg_match 与 '.jpg' 不准确图案

发布于 2024-12-10 19:51:49 字数 578 浏览 0 评论 0 原文

我使用 preg_match 和模式 $pattern = '/src="http:\/\/(.*?).jpg"/s'; 来获取网址网页上的 jpeg 图像。但是,这不够准确,因为它还抓取 http://www.domain.com/image.png"> Yadayada

其他时候,它会抓取类似的东西

http://maps.google.com/maps/api/staticmap?center=42.34,-71.18&path=weight:4|42.338,-71.177|42.338 ,-71.183|42.342,-71.183|42.342,-71.177|42.338,-71.177&zoom=15&​​amp;size=335x225&sensor=false"宽度=“280”高度=“188”alt=“”>

我该如何改进防止不必要的匹配(如上面的两个示例)的模式?

I am usng preg_match with the pattern $pattern = '/src="http:\/\/(.*?).jpg"/s'; to grab urls of jpeg images off a webpage. However, this is not accurate enough as it also grabs http://www.domain.com/image.png"> Yadayada <img src="anotherpic.jpg.

Other times, it grabs stuff like

http://maps.google.com/maps/api/staticmap?center=42.34,-71.18&path=weight:4|42.338,-71.177|42.338,-71.183|42.342,-71.183|42.342,-71.177|42.338,-71.177&zoom=15&size=335x225&sensor=false" width="280" height="188" alt=""></td></tr> <tr><td height="10"></td></tr></table></td></tr></table></td></tr><tr><td height="10 valign="> </td></tr><tr><td valign="top" background="http://www.coolapartments.info/img/java-footer_bg.jpg

How can I improve the pattern to prevent unwanted matching like the 2 examples above?

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

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

发布评论

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

评论(2

行雁书 2024-12-17 19:51:49

(.*?).jpg 替换为 ([^"]*)\.jpg 以避免跨越 src 属性甚至可以使用 src="([^"]*)\.jpg" 更通用,而不匹配 http

Replace the (.*?).jpg by ([^"]*)\.jpg to avoid crossing the double quote boundary of the src attribute. It could even be more generic with src="([^"]*)\.jpg", without matching the http.

↙厌世 2024-12-17 19:51:49

使用 DOM 和此 XPath

//@src[contains(,. '.jpg')]

来匹配某处包含字符串“.jpg”的元素的所有 src 属性。

如果属性应以“.jpg”结尾,请使用

//@src[substring(., string-length(.) - 4) = '.jpg']

相当于 XPath 2.0 函数的结尾。

使用 DOM 和 XPath 的主要好处是它只能对 src 属性进行操作,而您的正则表达式可以在任何地方匹配。这里有大量 DOM 和 XPath 的使用示例:

Use DOM and this XPath

//@src[contains(,. '.jpg')]

to match all src attributes of elements that contain the string ".jpg" somewhere.

If the attribute should end in ".jpg" use

//@src[substring(., string-length(.) - 4) = '.jpg']

which is the equivalent to the XPath 2.0 function ends-with.

The main benefit of using DOM and XPath is that it will only operate on src attributes, while your regex matches everywhere. There is plenty of usage examples for DOM and XPath here:

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