0

假设一个简单的 html dom 对象包括以下内容

text1
<br />
<br />
<br />
text2
<br />

如何使用简单的 html dom 获取任一文本?

4

3 回答 3

1

要获取所有纯文本元素,您可以使用以下命令:

$string="text1
<br />
<br />
<br />
text2
<br />";

$html = str_get_html($string);
$texts=$html->find('text');
foreach($texts as $elem_index => $text){
    echo $elem_index."=>".$text."<br>";
}

您的输出应如下所示:

0=>text1
1=>
2=>
3=> text2 

在 foreach 循环中,您显然可以进行所需的任何过滤。例如,如果您要查找与特定字符串匹配的文本,您可以简单地执行以下操作:

if (trim($text) == "text2")
    //do something

所以,如果你想替换找到的文本,你可以使用:

if (trim($text) == "text2")
    $texts[$elem_index]->innertext = "something else";
$html->save();

并将$html包含新的 html。

于 2012-05-27T01:49:28.417 回答
1

只需使用纯文本从html获取文本值。

$opts = array(
'http' => array(
    'method' => "GET",
    'header' => "Accept-language: en\r\n" .
        "User-Agent:    Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; 
         rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6\r\n" .
        "Cookie: foo=bar\r\n"
     )
  );

$context = stream_context_create($opts);

$html1 = new simple_html_dom();
$html1->load_file($url, false, $context);
$appName1 = $html1->find('tagname.classname or id', 0)->plaintext;

类使用 ( tagname.classname) 和 id 使用 ( tagname#id) 来获取文本。

如果任何网站获得移动版本,$context 用于设置浏览器支持的标题,因此您可以添加标题以获取浏览器支持内容。

于 2017-11-30T06:06:40.513 回答
0

使用 jquery 尝试 $(document.body).contents();

这应该是一个节点数组,其中 text1 和 text2 作为文本节点。

于 2012-04-13T20:06:18.377 回答