PHP正则表达式的问题

时间:2011-08-18 14:15:21

标签: php regex html-parsing

我似乎无法弄清楚如何使用正则表达式从页面中拉出整个表格。

这是我的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 个答案:

答案 0 :(得分:4)

我们再来一次......不要使用正则表达式来提取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";

工作相同,除了引用版本浪费一些cpu产生一个临时字符串,只会再被丢弃。