PHP - 在文件中搜索值并回显整个<div>

时间:2015-05-17 13:09:04

标签: php

我有一个包含大量信息的外部文件,例如

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吗?

2 个答案:

答案 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);