使用PHP dom访问元素时遇到问题

时间:2012-03-14 19:38:01

标签: php dom

我正在尝试将包含大部分html代码的php文件加载到DOMdocument中,以便我可以访问页面上某些输入表单的值。这是我正在使用的代码:

$dom = new DOMDocument();
$html = file_get_contents('./drafter.php');

$dom->load($html);  

$rw = $dom->getElementById('rW')->nodeValue;

这是drafter.php文件中的rW的html:

<input type="text" id="rW" size="3" maxlength="4"value="1100"/>

我做错了什么?谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

nodeValue包含标记的内部值,例如text内的<p>text</p>。你想要的是value属性:

 $rw = $dom->getElementById('rW')->getAttribute("value");

请注意,如果您希望drafter.phpfile_get_contents()的形式执行ob_start(); include("../drafter.php"); $html = ob_get_contents(); ob_end_clean(); // Then load it into the DOM $dom->load($html); ,则不会。其内容只能作为纯文本文件读取。如果您需要以PHP格式执行文件,则可以包含它并使用输出缓冲来捕获内容:

{{1}}

答案 1 :(得分:1)

我建议使用这个名为simple html dom :)的php库。它支持“jquery样式”选择器

解决您的问题:

$html = str_get_html('<input type="text" id="rW" size="3" maxlength="4"value="1100"/>');
$value = $html->find("#rw")->value;

http://simplehtmldom.sourceforge.net/