PHP preg_match_all ничего не возвращает - PullRequest
2 голосов
/ 28 февраля 2010

Я пытаюсь извлечь все теги img из строки HTML. Смотреть код

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

И результат

Array ( [0] => Array ( ) )

Но тот же регулярное выражение дает правильный результат в онлайн-инструменте тестирования регулярных выражений http://regex.larsolavtorvik.com/.

В чем может быть проблема?

Ответы [ 3 ]

1 голос
/ 28 февраля 2010

Анализируемый контент кодируется с помощью html-сущностей - в основном < заменяется на &lt;.Сначала используйте html_entity_decode , чтобы преобразовать данные в обычный html.

PS: используйте анализатор HTML вместо регулярных выражений.

0 голосов
/ 28 февраля 2010

Решил проблему с помощью SimplePie XML Parser

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);
}

Это именно то, что я искал :) Спасибо, ребята !!

...