2010-02-22 2 views
0

Как было рекомендовано в предыдущем моем вопросе, я использую PHP Simple HTML DOM Parser как способ поиска документа HTML и захвата содержимого из определенного элемента (в моем случае, в текстовом поле). Мне было интересно, использовал ли кто-нибудь это раньше и смог дать мне какие-либо советы по моей проблеме (или порекомендовать другое решение). Код, я использую выглядит следующим образом:PHP DOMParser Help

include "../simple_html_dom.php"; 
$html  = file_get_html('http://example.com'); 
$textarea = $html->find('textarea[id=body]'); 
$contents = $textarea->outertext; 

echo $contents; 

Моя проблема заключается в том, что сценарий запускает код и не получает никаких данных из элемента (который выглядит следующим образом:

<textarea id="body" name="body" rows="12" cols="75" tabindex="3"> 
At 2/21/10 10:15 PM, You wrote 
: Hello world, 
: how are you today? 

</textarea> 

Я сожалею обратиться за советом с этим определенным способом, но если кто-то имеет какие-либо советы было бы весьма признателен. Большое спасибо заранее

ответ

0

Как вы можете видеть в documentationfind возвращает массив, так что для начала вы не должны относиться к это как будто это были узлом. Кроме того, вы хотите innertext не outertext.

Это должно работать:

include "../simple_html_dom.php"; 
$html  = file_get_html('http://example.com'); 
$textarea = $html->find('textarea[id=body]'); 
$contents = $textarea[0]->innertext; 

echo $contents; 
0

Страница, которую вы связаны говорит следующее:

// Find all <div> which attribute id=foo 
$ret = $html->find('div[id=foo]'); 

Это говорит мне, что $ret будет коллекция. Синтаксически вы используете что-то похожее на CSS attribute selectors. Поскольку этот синтаксис должен быть обобщен для применения к любому атрибуту, тот факт, что id должен быть уникальным, не рассматривается и возвращается коллекция ... Я подозреваю, что если вы попробовали что-то вроде этого ...

$ret = $html->find('div#foo'); 

... это может сработать.