使用 PHP 从 HTML 获取字符串


Get string from HTML using PHP

几天前,我问我如何使用cURL获取另一个网站的内容。我设法让它工作。现在我想从存储在 html 中的一些日期

<td class="table_day"></td>

我相信我可以用DOMDocument或DomXPath来做到这一点。这是我尝试过的代码:

$dom = new DOMDocument;
$dom->loadHTML($result);
$lis = $dom->getElementsByClassName("table_day");

$classname="table_day";
$finder = new DomXPath($doc);
$spaner = $finder->query("//*[contains(@class, '$classname')]");

设法在一些帮助下获得了代码,但是当我在 safari 中打开控制台时,我收到内部服务器错误消息。我认为这是因为我的本地主机和/或我的网络服务器上没有启用 fopen。

有没有另一种方法可以使用 php 从 html 代码中获取字符串?

这是我想从中获取不同日期的代码:

<tr class="table_date_row">
  <td>Week: 11</td>
  <td class="table_day">Maandag 09-03-2015</td>
  <td class="table_day">Dinsdag 10-03-2015</td>
  <td class="table_day">Woensdag 11-03-2015</td>
  <td class="table_day">Donderdag 12-03-2015</td>
  <td class="table_day">Vrijdag 13-03-2015</td>
  <td class="table_day">Zaterdag 14-03-2015</td>
  <td class="table_day">Zondag 15-03-2015</td>
  <td>&nbsp;</td>
  <td>&nbsp;</td>
</tr>

(1) 用file_get_contents
读取HTML(2) 使用正则表达式解析日期/preg_match_all

$html = file_get_contents("http://whatever");
preg_match_all('|table_day">(.*)<'/td>|', $html, $result);
print_r($result[1]);

DOMDocument并不是获取HTML的很酷的方法,它最适合XML;因为XML通常写得很好,在大多数情况下HTML代码是混乱和不恰当的。

你可以用任何你喜欢的方法读取你的文件,例如:cURL,file_get_contents或者有时如果你在Linux服务器上,你可以使用wget。

要从HTML结构中获取特定信息,最好由正则表达式处理。网上有很多同样的例子。