PHP bir String URL ayıklayın nasıl?

4 Cevap php

Flickr'dan bazı verileri almak için PHP'nin "simplexml_load_file" kullanıyorum.

Amacım fotoğraf url elde etmektir.

Ben (PHP değişkene atanmış) aşağıdaki değeri elde edebiliyoruz:

<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>

How can I extract just this part of it?

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

Yardımcı olur sadece durumda, burada ben çalışıyorum kod:

<?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 Cevap

Muhtemelen HTML oluşturulan yol hemen hemen aynı, örneğin kalmak için gidiyoruz olduğunu varsayarak, bunun için normal bir ifade kullanarak uzak alabilirsiniz:

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

Bu oldukça un-sağlam, ve HTML değişecek eğer (örneğin <img> etiketi, vb biçimlendirilmiş HTML riski parametrelerin sırası), bir HTML çözümleyici kullanarak daha iyi olurdu.

Ben 2 projelerde kütüphane kullandım ve iyi yazılmış çünkü bu sorunu çözme (ve muhtemelen overkill toplam), ama kayda değer değil.

phpFlickr - http://phpflickr.com/

Kolay yol: İlk etiketi ve sonra src = '...' değeri, ve nihayet hedef dize ayıklamak için substr ve strpos kombinasyonu.

Biraz daha zor bir şekilde (AMA COK DAHA GÜÇLÜ): Bu tür SimpleXML gibi bir XML ayrıştırma kitaplığı kullanın

Bu yararlı olduğunu umuyoruz. Ben geri SimpleXML almak XML kesmek için XPath kullanarak tadını çıkarın:

<?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
}
?>