Min*_*int 22 html php parsing domdocument
我试图用"getElementsByTagName"来做它,但是它不起作用,我是新手使用DOMDocument来解析HTML,因为我曾经使用正则表达式直到昨天在这里有一些类型的fokes告诉我DOMEDocument会更好用于工作,所以我试一试:)
我谷歌周围寻找一些解释,但没有找到任何帮助(不管怎么样)
所以我想捕获"捕获此文本1"和"捕获此文本2"等.
看起来不难,但我想不出来:(
<div class="main">
<div class="text">
Capture this text 1
</div>
</div>
<div class="main">
<div class="text">
Capture this text 2
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
Pas*_*TIN 52
如果你想得到:
<div>
标签内class="text"
<div>
有class="main"
我想说最简单的方法就是不使用DOMDocument::getElementsByTagName
- 这会返回所有具有特定名称的标签(而你只需要其中一些标签).
相反,我会使用DOMXpath
类在您的文档上使用XPath查询.
例如,像这样的事情应该做,将HTML字符串加载到DOM对象,并实例化DOMXpath
该类:
$html = <<<HTML
<div class="main">
<div class="text">
Capture this text 1
</div>
</div>
<div class="main">
<div class="text">
Capture this text 2
</div>
</div>
HTML;
$dom = new DOMDocument();
$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用该DOMXPath::query
方法使用XPath查询返回您要搜索的元素列表:
$tags = $xpath->query('//div[@class="main"]/div[@class="text"]');
foreach ($tags as $tag) {
var_dump(trim($tag->nodeValue));
}
Run Code Online (Sandbox Code Playgroud)
执行此操作会给我以下输出:
string 'Capture this text 1' (length=19)
string 'Capture this text 2' (length=19)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
42013 次 |
最近记录: |