php - 需要根据匹配类从字符串中获取 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
字符串中?
我怎样才能整理它并让它工作?
解决方案
解决方案是执行以下操作:
$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 字符串。
推荐阅读
- javascript - 使用 Webpack 编译 SASS 文件
- sapui5 - VizFrame 错误消息:50014 - Feed Failed Tests 无法接受更多数据容器
- sql - 不识别 WHERE 子句中的别名
- python - 在装饰器中实现的 Python 静态变量不会重置
- mysql - 如何获得历史记录中的最后一行
- javascript - 同源策略不允许读取远程资源
- regex - sed:在 ^*= 的替换和正则表达式中苦苦挣扎
- javascript - CSV 导出始终只导出一行
- java - interupt() 方法如何在 java 线程中工作?
- css - 如何对齐标题中的 2 个不同元素?