Проблема с регулярными выражениями PHP - PullRequest
0 голосов
/ 18 августа 2011

Я просто не могу понять, как извлечь всю таблицу со страницы с помощью регулярных выражений.

Это мой PHP:

$printable = file_get_contents('http://entertainment.soundboxaudio.com/testplaylist.htm');
$array = array();
preg_match( '/<TABLE>(.*?)<\/TABLE>/si', $printable, $array ) ;
$findit = "$array[1]";
echo("$findit");

Любая помощь будет оценена,

Спасибо!

1 Ответ

4 голосов
/ 18 августа 2011

Здесь мы снова ... НЕ используйте регулярные выражения для извлечения HTML. HTML не является обычным языком и не может быть надежно проанализирован с помощью регулярных выражений. Вместо этого используйте DOM.

$printable = file_get_conttents('...');
$dom = new DOMDocument;
$dom->loadHTML($printable);
$xpath = new DOMXpath($dom);

$tables = $xpath->query("//table");

$table_html = array();

foreach($tables as $table) { // workaround for PHP DOM not support innerHTML
   $temp = new DOMDocument;
   $temp->appendChild($temp->importNode($table, true));
   $table_html[] = trim($temp->saveHTML());
}

Кроме того, окружающие переменные, которые вы выводите, - это просто трата строковой операции

echo $x
echo "$x";

работает идентично, за исключением того, что указанная версия тратит впустую некоторое время, некоторые процессоры производят временную строку, которая только снова выбрасывается.

...