简单的html dom - 类名中的空格

时间:2014-03-14 23:13:27

标签: php html simple-html-dom

我正在使用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 -->

4 个答案:

答案 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会查找具有多个类属性

的元素