PHP Regex获取页面上的所有图像URL

Man*_*mer 2 php regex

奇怪的是,我没有找到任何具体回答这个问题的地方,我发现的所有其他堆栈溢出的东西都不完全正确.

我有一个正文我需要搜索图像网址,这并不意味着什么复杂,但基本上是这样的:

http://www.google.com/logo.png

http://reddit.com/idfaiodf/test.jpg

http://reddit.com/sadfasdf/test.jpgMORECONTENTHERE

我使用的所有正则表达式都将在结果中包含"MORECONTENTHERE".地狱令人沮丧.我只想要之前没有附加任何内容的URL或之前添加的URL!

此外,我不想要任何HTML图像链接提取 - 我不是从HTML中提取这些.

任何正则表达式这样做?

编辑:

所以这就是我作为一个来源使用的:http://pastebin.com/dE2s1nHz

这是HTML,但我不想提及,因为我不希望别人这样做

Luk*_*uke 7

https?://[^/\s]+/\S+\.(jpg|png|gif)
Run Code Online (Sandbox Code Playgroud)
  1. https? 是"http"或"https"
  2. :// 是文字的
  3. [^/\s]+ 不是"/"或空格
  4. / 是文字的
  5. \S+ 什么都不是空间
  6. \. 是"."
  7. (jpg | png | gif)是图片扩展名,由.分隔 |

结果:

在此输入图像描述

以上内容取自RegexBuddy,用于Mac上的Wine."PCRE"相当于preg_*功能.表达式应该适用于大多数正则表达式.


Abs*_*ERØ 5

这与以已知图像扩展名结尾的字符串匹配。

<?php

    $string = "Oddly enough I haven't found anywhere that has answer this question specificly, all the other stack overflow things I've found aren't exactly right.

    I have a body text I need to search through for image urls, this doesn't mean anything complex but basically things like:

        http://www.google.com/logo.png

        http://reddit.com/idfaiodf/test.jpg

    NOT

        http://reddit.com/sadfasdf/test.jpgMORECONTENTHERE
    ";

    $pattern = '~(http.*\.)(jpe?g|png|[tg]iff?|svg)~i';

    $m = preg_match_all($pattern,$string,$matches);

    print_r($matches[0]);

?>
Run Code Online (Sandbox Code Playgroud)

输出

Array
(
    [0] => http://www.google.com/logo.png
    [1] => http://reddit.com/idfaiodf/test.jpg
    [2] => http://reddit.com/sadfasdf/test.jpg
)
Run Code Online (Sandbox Code Playgroud)