2012-03-14 3 views
2

Я пытаюсь загрузить php-файл, содержащий в основном код html в DOMdocument, чтобы я мог получить доступ к значениям некоторых форм ввода на странице. Вот код, я использую:Проблема с доступом к элементу с PHP dom

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

$dom->load($html); 

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

вот HTML из Rw из файла drafter.php:

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

Что я делаю неправильно? Спасибо за помощь.

ответ

2

nodeValue содержит внутреннее значение тега, например text внутри <p>text</p>. То, что вы хотите это value атрибут:

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

Обратите внимание, что если вы ожидаете drafter.php быть выполнен в виде PHP по file_get_contents(), это не будет. Его содержимое будет просто прочитано как обычный текстовый файл. Если вам нужен файл выполняется, как PHP, вы можете включить его и капкан содержимое с буферизацией вывода:

ob_start(); 
include("../drafter.php"); 
$html = ob_get_contents(); 
ob_end_clean(); 

// Then load it into the DOM 
$dom->load($html); 
+0

Спасибо! Также как лучше всего проверить правильность загрузки dom? – user1258430

+0

@ user1258430 Просто вызовите 'if (! $ Dom)' после '$ dom-> load()'. '$ dom' будет FALSE, если он не загрузится. –

+0

hmm его все еще не работает, переменная $ rw пуста. возможно, я не назвал файл правильно. Файл php-файла drafter - это одна папка, с которой работает этот скрипт. – user1258430

1

Я рекомендую использовать эту библиотеку PHP под названием simple html dom :). Он поддерживает селектор "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/

Смежные вопросы