使用PHP从HTML获取字符串

时间:2015-03-12 10:03:13

标签: php html

几天前,我问我如何通过cURL获取其他网站的内容。我设法让这个工作。现在我想从html中获取存储在

中的一些日期

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

我相信我可以使用DOMDocument或DomXPath执行此操作。 这是我试过的代码:

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

OR

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

我设法获得了一些帮助,但是当我在safari中打开我的控制台时,我收到内部服务器错误消息。我想这是因为我的localhost和/或我的网络服务器上没有启用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>

2 个答案:

答案 0 :(得分:0)

(1)使用file_get_contents阅读HTML (2)用RegularExpressions / preg_match_all

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

答案 1 :(得分:0)

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

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

从HTML结构中获取特定信息最好由RegularExpression处理。网上有很多可用的例子。