2013-07-23 181 views
0

这是我的HTML的一部分:获取HTML从文件中使用简单的HTML DOM

<div class="info"> 
    <ul class="links"> 
    </ul> 
    <h1>TEXT #1</h1> 
    <ul class="names"> 
     <li> 
     <img src="images/flags/flag_1.gif" alt="USA" /> 
     <h3>TEXT #2</h3> 
     </li> 
     <li> 
     <img src="images/flags/flag_34.gif" alt="CZ název" /> 
     <h3>TEXT #3</h3> 
     </li> 
    </ul> 

我使用简单的HTML DOM praser,我要尽量拿到3文本(TEXT#1,TEXT#2,TEXT #3)

我的PHP代码尝试:

$html = file_get_html('file.txt'); 
$ret = $html->find('ul[class="links"]'); //nazov filmu 


foreach ($ret as $translate) { 
    $translate = $translate->innertext; 
    } 
    echo "$translate"; 

理想的结果应该是:

echo "$translate[0]"; //TEXT #1 
echo "$translate[1]"; //TEXT #2 
echo "$translate[2]"; //TEXT #3 
+0

你为什么不这样做在JavaScript? –

+0

我已经在PHP中完成了90%,只是更多的像这样失踪 – Andurit

回答

0

我认为“file.txt”是指上面的一段HTML ...

在我看来你喜欢你的find('ul [class =“links”]')不包含任何东西(按照示例代码)。你是否试图选择所有类型的标签?

+0

你是对的,我的第一篇文章中的HTML代码是file.txt的一部分。我只是不知道如何从HTML中选择这样的东西。所以是啊,我的PHP代码可以全部错误 – Andurit

0

PHP

$titles = array(); 
$html = file_get_html('file.txt'); 
$html = $html->ownerDocument; 
$lists = $html->getElementsByTagName("ul") 
foreach($lists as $list): 
    if($list->getAttribute('class') == "links"): 
     $list = $list->ownerDocument; 
     $h3 = $list->getElementsByTagName('h3'); 

     foreach($h3 as $title) 
      $titles->push($title); 
    endif; 
endforeach; 

echo $titles[0]; 
+0

感谢您的答案队友,但它给我这个错误:解析错误:语法错误,意外的'数组'(T_ARRAY) – Andurit

+0

@Andurit尝试使用此代码(我编辑了我的答案)。自从我编写了一些PHP内容以来,这已经有一段时间了,所以我的数组初始化部分是错误的。现在已经修复了。 –

+0

嘿,它仍然抛出一些错误: 注意:试图获取非对象的属性 致命错误:调用一个非对象的成员函数getElementsByTagName() – Andurit