使用file_get_contents并使用具有类的表中的内容的特定部分

时间:2013-02-15 05:13:19

标签: php domdocument

我使用file_get_contents()从其他网站获取数据,但我需要使用类<table>提取inputpanelfields元素,例如:

...
<table class="inputpanelfields">
<!-- this is what I need -->
</table>
...

我该怎么做?

3 个答案:

答案 0 :(得分:2)

$body = file_get_contents('http://example.org/path/to/page');
$d = new DOMDocument;
libxml_use_internal_errors(true);
$d->loadHTML($body);
libxml_clear_errors();

$x = new DOMXPath($d);
if (($table = $x->query('//table[contains(@class, "inputpanelfields")]'))) {
    echo $d->saveHTML($table->item(0));
}

Demo

答案 1 :(得分:0)

您正在尝试使用PHP执行“Javascript工作”。如果您的内容是XHTML,最好的方法是将内容加载到DOMDocument中,然后使用XPath搜索您的特定节点,最后检索Element的输出。

点击此处:http://php.net/manual/fr/domdocument.loadhtml.php

注意:不确定是否有效,但您可以尝试。

答案 2 :(得分:0)

您将需要构建一个函数来查找并将其拉出来。

您可以使用PHP stristr来检查表是否存在。 函数substr_count将告诉您它是否存在多次。

假设它在页面上一次,让$ pagepart =你的file_get_contents和$ term =“inputpanelfields”

那么这应该从页面中抓取表格

$end = mb_stristr($pagepart,$term,false); // Case insensitive; finds the first occurrence
$beg = mb_stristr($pagepart,$term,true); // Case insensitive; finds the first occurrence
$end = mb_stristr($end,'</table>',true); // Case insensitive
$beg = mb_strrichr($beg,'<table',false); // Case insensitive
$beg = str_replace($term,'',$beg);

希望这有帮助。

史蒂夫