PHP正则表达式获取页面上的所有图像URL

PHP正则表达式获取页面上的所有图像URL,php,regex,Php,Regex,奇怪的是,我还没有找到任何地方能具体回答这个问题,我发现的所有其他堆栈溢出的东西都不完全正确 我有一个正文,我需要搜索图像URL,这并不意味着什么复杂的事情,但基本上是这样的: 不是 我使用的所有正则表达式都会在结果中包含“MORECONTENTHERE”。这真令人沮丧。我只是想与任何附加后或之前添加的网址 此外,我不想做任何HTML图像链接提取-我不是从HTML拉这些 有正则表达式可以这样做吗 编辑: 以下是我用作来源的内容: 这是HTML,但我不想提及,因为我不想让人们这么做 http

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

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

不是

我使用的所有正则表达式都会在结果中包含“MORECONTENTHERE”。这真令人沮丧。我只是想与任何附加后或之前添加的网址

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

有正则表达式可以这样做吗

编辑:

以下是我用作来源的内容:

这是HTML,但我不想提及,因为我不想让人们这么做
https?://[a-zA-Z0-9.]/[a-zA-Z0-9-&.]+\.(jpg|png|gif|tif|exf|svg|wfm)
我选择了一些任意的图像类型,可能遗漏了URL中允许的几个特殊字符。您可以根据自己的需要进行定制。

尝试以下代码:

$text = <<< EOD
http://www.google.com/logo.png
http://reddit.com/sadfasdf/test.jpgMORECONTENTHERE
http://reddit.com/idfaiodf/test.jpg
EOD;

preg_match_all('/\bhttps?:\/\/\S+(?:png|jpg)\b/', $text, $matches);
var_dump($matches[0]);

$text=匹配以已知图像扩展名结尾的字符串

<?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]);

?>
  • https?
    是“http”还是“https”
  • ://
    是文本
  • [^/\s]+
    不是“/”或空格
  • /
    是文本
  • \S+
    绝对不是空格
  • \。
    是“
  • (jpg | png | gif)是图像扩展,由
  • 结果:


    以上内容摘自RegexBuddy,用于Mac上的葡萄酒。“PCRE”相当于
    preg.*
    函数。表达式应该适用于大多数正则表达式风格。

    如果您不是从HTML中获取它们,请发布一个示例,说明从何处获取它们。如果没有这一点,将很难避免捕获第三个示例,或者不捕获前两个示例。好的,现在添加一个示例我认为可能会丢失不在根目录中的图像。和带有破折号的域。问题是它将匹配图像之前的任何URL,包括图像URL。尝试将链接放在图像之前,匹配将扩展到封装两者。如果您没有转义文本,则不需要转义
    /
    ,除非您在PHP的
    preg.*
    函数中将其用作分隔符。看见分隔符不是表达式的一部分,因此将忽略它们。将
    /
    视为分隔符是很常见的,但是如果在模式中使用
    /
    ,通常最好避免将其用作分隔符而不是转义它。
    Array
    (
        [0] => http://www.google.com/logo.png
        [1] => http://reddit.com/idfaiodf/test.jpg
        [2] => http://reddit.com/sadfasdf/test.jpg
    )
    
    https?://[^/\s]+/\S+\.(jpg|png|gif)