假设一个简单的html dom对象包含以下
text1
<br />
<br />
<br />
text2
<br />
如何使用简单的html dom获取任一文本?
答案 0 :(得分: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。
答案 1 :(得分: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用于浏览器支持的设置标头,如果任何网站获得移动版本,那么您可以添加标头以获取浏览器支持内容。
答案 2 :(得分:0)
使用jquery尝试$(document.body).contents();
这应该是一个节点数组,其中text1和text2为文本节点。