首页 > 解决方案 > 需要根据匹配类从字符串中获取 div

问题描述

我有一个变量$company_id = 8;和一个 HTML 内容块存储为一个名为的字符串all_content

<div class="company-id-8">
    Content One
</div>
<div class="company-id-9">
    Content Two
</div>
<div class="company-id-8">
    Content Three
</div>
<div class="company-id-3">
    Content Four
</div>

我需要删除所有all_content与当前公司 ID 类不匹配的 div。所以,一旦过滤,上面的 html 应该变成:

<div class="company-id-8">
    Content One
</div>
<div class="company-id-8">
    Content Three
</div>

我有以下代码来过滤掉不属于当前公司的 div:

$dom = new DomDocument();
$dom->loadHTML( $full_message );
$finder = new DomXPath($dom);
$classname = "company-id-" . $company_id;
$nodes = $finder->query("//div[contains(@class, '$classname')]");

foreach ( $nodes as $node ) {
    $filtered_content .= ;
}

我似乎无法弄清楚如何将过滤div后的节点重新放入filtered_content字符串中?

我怎样才能整理它并让它工作?

标签: php

解决方案


解决方案是执行以下操作:

$filtered_content = "";
foreach ( $nodes as $node ) {
    $tmp_doc = new DOMDocument();
    $tmp_doc->appendChild($tmp_doc->importNode($node,true));
    $filtered_content .= $tmp_doc->saveHTML();
}

filtered_content最终成为具有正确内容的可用 HTML 字符串。


推荐阅读