我试图找出,如果使用simple_html_dom找不到指定的#id或.class,如何处理错误。我一直收到一条错误,上面写着“试图在第11行的C:\ xampp \ htdocs \ index.php中获取非对象的属性”。
include_once 'simple_html_dom.php';
$html = file_get_html($url);
$ret = $html->find('#myId');
foreach($ret as $elements) {
foreach($elements->find('iframe') as $link) {
return $link->src;
}
}
答案 0 :(得分:0)
如果您在#myId
下查找iframe,则可以使用合并查询
$html->find('#myId iframe')
如果您只想查找设置了src
属性的iframe,则可以进一步细化您的查询:
$html->find('#myId iframe[src]')
$html->find(...)
返回一个数组,因此请检查返回的数组是否为空:
$iframes = $html->find('#myId iframe[src]');
if (empty($iframes)) {
echo "No iframes found!\n";
} else {
echo "Found some iframes with a src attribute!\n";
// do your stuff here
}
如果您想查看所有iframe,而不仅仅是那些src
属性的iframe,您可以使用以下代码:
$iframes = $html->find('#myId iframe');
if (empty($iframes)) {
echo "No iframes found!\n";
} else {
echo "Found some iframes!\n";
foreach($iframes as $i) {
// check whether there is a src attribute or not
if (isset($i->src)) {
echo "iframe src is " . $i->src . "\n";
} else {
echo "iframe has no src attribute.\n";
}
}
}