我正在使用PHP Simple HTML DOM从网站的源代码(不是我的)获取元素,当我找到一个名为“board List”的ul类时,找不到它。我想它可能是空间问题,但我不知道如何解决它。
这是一段php代码:
$html = str_get_html($result['content']); //get the html of the site
$board = $html->find('.board List'); // Find all element which class=board List,but in my case it doesn't work,with other class name it works
这是网站的一段HTML代码:
<!-- OTHER HTML CODE BEFORE THIS --><ul class="board List"><li id="c111131" class="skin_tbl">
<table class="mback" cellpadding="0" cellspacing="0" onclick="toggleCat('c111131')"><tr>
<td class="mback_left"><div class="plus"></div><td class="mback_center"><h2 class="mtitle">presentiamoci</h2><td class="mback_right"><span id="img_c111131"></span></table>
<div class="mainbg">
<div class="title top"><div class="aa"></div><div class="bb">Forum</div><div class="yy">Statistiche</div><div class="zz">Ultimo Messaggio</div></div>
<ul class="big_list"><!-- OTHER HTML AFTER THIS -->
答案 0 :(得分:2)
我通过从find参数中删除board来解决它,如下所示:
$board = $html->find('.List');
现在解析器似乎正常工作
答案 1 :(得分:1)
简单地说,你可能想要使用:
$html->find('*[class="board List"]', 0);
如果你真的想使用:
$html->find('.board.List', 0);
然后use this one。
答案 2 :(得分:0)
答案是:你不能在类名中使用空格。空格是类的分隔符
如果你有<div class="container wrapper-something anothersomething"></div>
,那么你可以使用.container
,.wrapper-something
或.anothersomething
作为选择器,并且你总是匹配该div。
因此,在您的代码中,您有<ul class="board List">
,因此要在css选择器($html->find('{here_comes_the_css_selector}');
)中获得匹配,您可以使用eather .board
或.List
作为选择器
因此,您的第$board = $html->find('.board List');
行看起来应该更像这样:
$board = $html->find('.board.List');
// maches every element who has class 'board' AND 'List'
// Here it is really important that there is no spaces between those 2 selectors
// or
$board = $html->find('.List');
// maches every element who has class 'List'
// or
$board = $html->find('.board');
// maches every element who has class 'board'
答案 3 :(得分:0)
$board = $html->find('[class="board List"]');
使用此语法,SimpleHTMLDOM会查找具有多个类属性
的元素