PHP中的正则表达式:如何为html中的表创建模式

PHP中的正则表达式:如何为html中的表创建模式,php,preg-match-all,Php,Preg Match All,我正在使用最新的PHP。我想解析HTML页面以获取数据 HTML: PHP代码: <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/mypage.html'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNT

我正在使用最新的PHP。我想解析HTML页面以获取数据

HTML:

PHP代码:

<?php

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.test.com/mypage.html');  
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);


$pattern = '/<table class="margin15" style="margin-left: 0pt; margin-right: 0pt;" width="100%" align="left" border="1" cellpadding="0" cellspacing="0">[^~]</table>/';
preg_match_all($pattern, $result, $matches);
print_r($matches);

?>

我不能得到所有的桌子。当我使用简单的$pattern='/table/';,它给了我确切的结果。如何创建一个模式以在一个数组位置获取整个表?

使用正则表达式解析HTML充其量是一件痛苦的事,因为HTML不规则,我建议您使用。

使用正则表达式解析HTML充其量是一件痛苦的事,因为HTML不规则,我建议您使用。

或者只使用php提供的DOM类。我认为它可以和简单的HTMLDOM做得一样,但速度要快得多。别误会,我真的很喜欢简单的HTMLDOM,但是对于只有几十行的文件,或者仅仅使用php提供的dom类,它的速度很慢。我认为它可以和简单html dom做得一样,但速度要快得多。请不要误会,我非常喜欢简单html dom,但是对于只有几十行的文件来说,它的速度很慢,但是您可以尝试:

$pattern = '#<table(?:.*?)>(.*?)</table>#';
如果存在嵌套表,则此操作无效。

,但您可以尝试:

$pattern = '#<table(?:.*?)>(.*?)</table>#';
如果存在嵌套表,则此操作无效。

请查看。它描述了HTML解析器在PHP中的用法,这正是您想要做的。

请看一看。它描述了HTML解析器在PHP中的用法,这正是您想要做的。

您最好阅读此:,然后删除您的问题。您最好阅读此:,然后删除您的问题。是他提到的dom类,我不知道,但我想它在core中是可用的。是他提到的dom类,我不知道,但我想它在core中是可用的。