3

PHP の「simplexml_load_file」を使用して、Flickr からデータを取得しています。

私の目標は、写真のURLを取得することです。

次の値を取得できます(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

これがお役に立てば幸いです。私は 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 に答える
0

簡単な方法: substr と strpos を組み合わせて、最初にタグを抽出し、次に src='...' 値を抽出し、最後にターゲット文字列を抽出します。

少し難しい方法 (しかし、はるかに堅牢): simpleXML などの XML 解析ライブラリを使用する

于 2009-07-24T14:40:38.987 に答える