【问题标题】:How to Extract the URL from A String in PHP?如何从 PHP 中的字符串中提取 URL?
【发布时间】:2009-07-24 14:36:13
【问题描述】:

我正在使用 PHP 的“simplexml_load_file”从 Flickr 获取一些数据。

我的目标是获取照片网址。

我能够得到以下值(分配给 PHP 变量):

<p><a href="http://www.flickr.com/people/19725893@N00/">codewrecker</a> posted a photo:</p>

<p><a href="http://www.flickr.com/photos/19725893@N00/2302759205/" title="Santa Monica Pier"><img src="http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg" width="180" height="240" alt="Santa Monica Pier" /></a></p>

我怎样才能只提取其中的这一部分?

http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg

以防万一,这是我正在使用的代码:

<?php
$xml = simplexml_load_file("http://api.flickr.com/services/feeds/photos_public.gne?id=19725893@N00&lang=en-us&format=xml&tags=carousel");
foreach($xml->entry as $child) {
    $flickr_content = $child->content; // gets html including img url
    // how can I get the img url from "$flickr_content"???
 }
?>

【问题讨论】:

    标签: php simplexml flickr


    【解决方案1】:

    假设 HTML 的形成方式几乎保持不变,您可能可以不使用正则表达式,例如:

    if (preg_match('/<img src="([^"]+)"/i', $string, $matches)) {
        $imageUrl = $matches[1];   
    }
    

    这是相当不可靠的,如果 HTML 会发生变化(例如,&lt;img&gt; 标记中的参数顺序、HTML 格式错误的风险等),最好使用 HTML 解析器。

    【讨论】:

      【解决方案2】:

      它并没有解决你的问题(可能完全是矫枉过正),但值得一提的是,因为我在 2 个项目中使用过这个库,而且写得很好。

      phpFlickr - http://phpflickr.com/

      【讨论】:

        【解决方案3】:

        简单方法:结合 substr 和 strpos 先提取标签,然后提取 src='...' 值,最后提取目标字符串。

        稍微困难的方法(但更可靠):使用 XML 解析库,例如 simpleXML

        【讨论】:

          【解决方案4】:

          我希望这会有所帮助。我喜欢使用 xpath 来截断从 SimpleXML 返回的 XML:

          <?php
          $xml = new SimpleXMLElement("http://api.flickr.com/services/feeds/photos_public.gne?id=19725893@N00&lang=en-us&format=xml&tags=carousel", NULL, True);
          $images = $xml->xpath('//img');  //use xpath on the XML to find the img tags
          
          foreach($images as $image){  
              echo $image['src'] ;  //here is the image URL
          }
          ?>
          

          【讨论】:

            猜你喜欢
            • 2011-06-14
            • 2011-12-14
            • 2015-02-08
            • 1970-01-01
            • 2011-05-22
            • 1970-01-01
            • 2021-03-06
            • 2016-07-21
            相关资源
            最近更新 更多