DOMDocument:找到div,获取内容并打印没有div

时间:2012-01-30 00:36:23

标签: php wordpress domdocument

我想使用DOMDocument或其他提议的方法在wordpess中执行以下操作:

我将这个html保存在一个变量中:

<div id="gallery-3232" class="gallery gallery-3232">
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
</div>

我想最终得到一个包含以下内容的变量:

<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>

我怎么能这样做但没有javascript。使用PHP。

Thabnk你

3 个答案:

答案 0 :(得分:2)

我刚试过这个,我认为这就是你所需要的。基本上将HTML加载到DOMDocument中,通过ID获取所需的元素,然后遍历其子节点并输出:

$html = '<div id="gallery-3232" class="gallery gallery-3232">
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
<li><a href=""><img src="" alt="" /></li>
</div>
';

$doc = new DomDocument();
$doc->loadHtml($html);
$div = $doc->getElementById('gallery-3232');
$output = '';
foreach($div->childNodes as $element)
{
    $output .= $element->ownerDocument->saveHtml($element);
}
echo $output;

答案 1 :(得分:2)

$source = '<div id="gallery-3232" class="gallery gallery-3232">
            <li><a href=""><img src="" alt="" /></li>
            <li><a href=""><img src="" alt="" /></li>
            <li><a href=""><img src="" alt="" /></li>
            <li><a href=""><img src="" alt="" /></li>
            </div>';

$list = new DOMDocument();
$list->loadHTML($source);

$listItems = $list->getElementsByTagName('li');

$listString = "";

foreach ($listItems as $list) {
    $listString .= $list->C14N();
}

echo $listString;

答案 2 :(得分:1)

这是使用正则表达式快速而肮脏的方式:

$string = preg_replace('~</?div[^>]*>~', '', $string);

注意:就像我说的,这是一种快速而肮脏的方式。如果您确定输入 - 请使用此功能。但是,如果您要过滤不确定的输入,那么最好正确解析它。