【发布时间】:2009-07-08 19:37:19
【问题描述】:
好的,正如标题所说,我有一个使用 libcurl(PHP 中的 cURL)获取的 HTML 页面。
该页面有一个
【问题讨论】:
好的,正如标题所说,我有一个使用 libcurl(PHP 中的 cURL)获取的 HTML 页面。
该页面有一个
【问题讨论】:
如果您认为我不应该使用正则表达式,而应该使用 xpath 之类的东西,请说出如何使用。就像这样
<?php
$doc = new DOMDocument;
if ( !$doc->loadhtml($contents) ) {
echo 'something went wrong';
}
else {
$xpath = new DOMXpath($doc);
foreach($xpath->query('//form[@name="aspnetForm"]//input') as $eInput) {
echo 'name=', $eInput->getAttribute('name'), ' value=', $eInput->getAttribute('value'), "\n";
}
}
如果您收到烦人的警告消息,您可能需要使用 @$doc->loadhtml($contents);可能与libxml_use_internal_errors() 和libxml_get_errors() 结合使用
【讨论】:
这个怎么样 --> http://simplehtmldom.sourceforge.net/
* A HTML DOM parser written in PHP5+ let you manipulate HTML in a very easy way!
* Require PHP 5+.
* Supports invalid HTML.
* Find tags on an HTML page with selectors just like jQuery.
* Extract contents from HTML in a single line.
// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');
// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';
// Find all links
foreach($html->find('a') as $element)
echo $element->href . '<br>';
祝你好运。
【讨论】:
好的。既然你问:你不应该尝试用正则表达式解析非常规语言。一个简单的启发式方法是:如果语言看起来是“嵌套的”,那么它就是不规则的。
一种简单的方法可能是以下几行:
$htmldoc = new DOMDocument;
$htmldoc->loadHTMLFile("local_secure.html");
$forms = $htmldoc->getElementsByTagName("form");
$inputs = $forms->item(0)->getElementsByTagName("input");
foreach ($inputs as $input)
{ do_something_with($input->getAttribute("name"));
do_something_with($input->getAttribute("value")); };
根据自己的喜好添加错误检查。更多文档:http://www.php.net/book.dom
【讨论】: