我有一个包含大量信息的外部文件,例如
http://domain.com/thefile.html
文件中的每个数据都包含在<div>
元素中:
....
<div class="lineData">
<div class="lineLData">Playstation</div>
<div class="lineRData">awesome</div>
</div>
<div class="lineData">
<div class="lineLData">xbox one</div>
<div class="lineRData">not awesome</div>
</div>
<div class="lineData">
<div class="lineLData">wii u</div>
<div class="lineRData">mhhhh</div>
</div>
....
现在我想在整个文件中搜索关键字&#34; Playstation&#34;并回显整个<div>
:
<div class="lineData">
<div class="lineLData">Playstation</div>
<div class="lineRData">awesome</div>
</div>
这可以用PHP吗?
答案 0 :(得分:2)
如果我们假设资源/网址为$url
:
$result = array();
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents($url));
使用DomXPath查找课程<div>
的所有lineData
:
$xpath = new DomXPath($dom);
$lineDatas = $xpath->query('//div[contains(@class,"lineData")]');
添加所有lineData
<div>
包含&#34; playstation&#34;到$result
数组:
foreach($lineDatas as $lineData) {
if (strpos(strtolower($lineData->nodeValue), 'playstation') !== false) {
$result[] = $lineData;
}
}
输出结果的示例
foreach($result as $lineData) {
echo $dom->saveHTML($lineData);
}
输出
<div class="lineData">
<div class="lineLData">Playstation</div>
<div class="lineRData">awesome</div>
</div>
在OP中的示例HTML上进行测试时
答案 1 :(得分:0)
为此目的使用DOMDocument。
$dom = new DOMDocument;
$dom->loadHTMLFile("file.html");
现在你可以搜索div:
$xpath = new DOMXPath($dom);
$res = $xpath->query("//*[contains(@class, 'lineData')]");
现在你的div为DOMElement。使用以下几行可以节省:
$html = $res->ownerDocument->saveHTML($res);