【问题标题】:Just get the image URL from string in PHP [duplicate]只需从 PHP 中的字符串获取图像 URL [重复]
【发布时间】:2011-09-18 13:59:48
【问题描述】:

<img src="/images/mylondon.jpg" /> 之类的字符串中,我试图只检索 url 以在 PHP 的其他地方使用

我知道正则表达式是要走的路,但我现在无法理解它们。

有人可以帮忙吗?

【问题讨论】:

  • 我已经使用了下面给出的答案,这是可行的,但是有没有更好的方法呢?这不是我要搜索的整个文档,只是几行 HTML...
  • “正则表达式是要走的路”有人一直在欺骗你。正则表达式只是正则语言可接受的方式。对于其他语言,它们可能会产生大量问题。另见stackoverflow.com/questions/1732348/…

标签: php string


【解决方案1】:
preg_match_all('~<img.*?src=["\']+(.*?)["\']+~', $html, $urls);
$urls = $urls[1]

【讨论】:

  • 这个正则表达式在很多情况下都不起作用。和往常一样,在 HTML 中使用正则表达式是个坏主意。
  • 那么从html 行中获取url 的最佳方法是什么?
  • @shane 一种更易于维护的方法是使用 HTML 解析器类。例如PHP Simple HTML DOM Parser
  • @drrcknlsn:在这种情况下它会起作用。你能告诉我正则表达式什么时候不能解决这个问题吗?
  • @genesis 不会匹配&lt;img src=foo/&gt;等情况。它也会匹配它不应该匹配的东西,比如&lt;img src=''''''''''''&gt;。 @shane 你应该使用 DOM 解析器。
【解决方案2】:

我认为如果使用 DOMDocument 对象会更好:

$text = '<html><body><p>ala bala</p><img src="/images/mylondon.jpg" /></body></html>';
$htmlDom = new DOMDocument;
$htmlDom->loadHTML($text);

$imageTags = $htmlDom->getElementsByTagName('img');

$extractedImages = array();
foreach($imageTags as $imageTag){
   $extractedImages[] = $imageTag->getAttribute('src');
}

echo '<pre>'; var_dump($extractedImages); exit;

【讨论】:

    猜你喜欢
    • 2015-02-07
    • 2010-12-03
    • 2012-08-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多