PHP preg_match_all hiçbir şey döndürür

3 Cevap php

Ben bir HTML dizesi tüm img etiketlerini ayıklamak çalışıyorum. Kod bakın

$d1     = file_get_contents("http://itcapsule.blogspot.com/feeds/posts/default?alt=rss");
preg_match_all('/<img[^>]+>/i',$d1,$result);
print_r($result);

Ve sonuç

Array ( [0] => Array ( ) )

Ama aynı regex bir çevrimiçi regex test aracı doğru sonuç verir http://regex.larsolavtorvik.com/.

Ne sorun olabilir?

3 Cevap

Eğer ayrıştırma içeriği html varlıkları ile kodlanmış - temelde < &lt; ile değiştirilir. Normal html içine verileri dönüştürmek için html_entity_decode İlk kullanın.

PS: yerine regex bir HTML çözümleyici kullanın.

SimplePie XML Parser kullanarak sorunu çözüldü

include_once 'simplepie.inc';

$feed   = "feedurl";

$data       =   new SimplePie($feed);
$data->init();
$data->handle_content_type();

foreach ($data->get_items() as $item)
{
    $desc=$item->get_description();
    preg_match_all('/<img[^>]+>/i',$desc,$result);
    print_r($result);
}

Bu i :) Teşekkürler çocuklar arıyordu tam olarak ne olduğunu!