如何使用简单的html dom解析列表

时间:2014-12-25 08:17:13

标签: php html parsing html-lists simple-html-dom

我有一个HTML代码,我特别从下面给出的部分解决了这个html中的数据问题:

<li id=xyz>
  John Johnson
<sup>1<sup>
","
</li>

我想提取约翰约翰逊&#34;超出此列表,没有别的。不知道怎么做。感谢。

3 个答案:

答案 0 :(得分:1)

find('text')就是您追求的目标。它返回源中找到的所有文本块。

根据您的示例,这是一个有效的代码:

// Test data
$input = <<<_DATA_
    <li id=xyz>
      John Johnson
    <sup>1<sup>
    ","
    </li>
_DATA_;

//Create a DOM object
$html = new simple_html_dom();
// Load HTML from a string
$html->load($input);

// >> Long answer
echo "Long answer:<br/>";

// Search all text nodes inside the target node
$search = $html->find('li#xyz text');

// Loop through each node and print it
foreach( $search as $i => $txt ) {
    // No need to specify "->plaintext" since the content is already in plain text here
    echo "$i => " . $txt->plaintext . "<br/>";
}

// >> Short answer
echo "<hr>";
echo "Short answer:<br/>";

// Specifying the index (0th here) returns the Nth element from the array containing all search results
echo $html->find('li#xyz text', 0)->plaintext;

// Clear DOM object
$html->clear();
unset($html);

<强>输出:

Long answer:
0 => John Johnson 
1 => 1
2 => "," 
3 => 
-------------------
Short answer:
John Johnson

有关详细信息,请查看 Manual

答案 1 :(得分:0)

将您需要的内容包含在内。  是比较好的选择

<li id='xyz'>
  <span>John Johnson</span>
  <sup>1<sup>
    ","
</li>

然后在你的javascript上,假设你正在使用jquery。

var contentToGrab =  $('#xyz span').text();
// just verify you get the data correctly
console.log(contentToGrab);

答案 2 :(得分:0)

使用简单的javascript,你可以给一个类或Id到跨度并从javascript中获取

<span id="grabIt">John Johnson</span>

你的javascript:

Var john=document.getElementById("grabIt").innerText;