3

我正在使用 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"???
 }
?>
4

4 回答 4

6

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

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

这是相当不可靠的,如果 HTML 将要改变(例如标签中的参数顺序、<img>HTML 格式错误的风险等),最好使用 HTML 解析器。

于 2009-07-24T14:39:55.540 回答
1

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

phpFlickr - http://phpflickr.com/

于 2009-07-24T14:45:18.680 回答
0

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

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

于 2009-07-24T14:40:38.987 回答
0

我希望这是有帮助的。我喜欢使用 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
}
?>
于 2009-07-25T00:25:10.743 回答