php - PHP,使用 xpath 获取里面的所有 svg
问题描述
我有这个html:
<ul class="details">
<li>
<svg class="icon"><use xlink:href="#icon-location"></use></svg>
<span>São João de Vêr, Aveiro</span>
</li>
<li>
<svg class="icon"><use xlink:href="#icon-contract"></use></svg>
Permanente
</li>
<li>
<svg class="icon"><use xlink:href="#icon-duration"></use></svg>
Horário completo
</li>
从这里开始,我需要使用单独的数据(svg 和文本之后)来获取每个 li 的内容。
我试试这个,但我只得到没有 sgv 元素的 li 内容:
$dom = new \DOMDocument();
$dom->preserveWhiteSpace = false;
$dom->loadHTML($html);
$xpath = new \DOMXPath($dom);
$div = $xpath->query('//ul[@class="details"]');
$div = $div->item(0);
$result = $dom->saveXML($div);
dd($result);
结果:
<ul class="details">
<li>
<span>São João de Vêr, Aveiro</span>
</li>
<li>
Permanente
</li>
<li>
Horário completo
</li>
预期结果:
<ul class="details">
<li>
<svg class="icon"><use xlink:href="#icon-location"></use></svg>
<span>São João de Vêr, Aveiro</span>
</li>
<li>
<svg class="icon"><use xlink:href="#icon-contract"></use></svg>
Permanente
</li>
<li>
<svg class="icon"><use xlink:href="#icon-duration"></use></svg>
Horário completo
</li>
知道为什么会这样吗?
解决方案
这应该有效:
$div = $xpath->query('//ul[@class="details"]/*');
foreach($div as $d){
$result = $dom->saveXML($d);
echo($result);
}
推荐阅读
- plot - 如何在两点之间画一条线
- c++ - 哪些 C++ 标准库头文件调用 GCC 的 -pthread 选项的要求?
- java - 为什么 AtomicReference 不覆盖等于?
- ruby - Ruby 和 Rspec 模拟哈希
- python - 如何通过递归获取列表中所有元素出现的索引?
- flutter - 如何根据flutter app中的设备屏幕大小调整字体大小来固定文本的位置?
- entity-framework-migrations - 在事务中包装 ef 核心数据库更新
- jquery - 如果用户忽略通知,则删除类
- excel - 自动过滤器 - 将运算符动态链接到单元格
- ansible-inventory - 如何让 awx 使用 azure_rm.yml 而不是 ini 版本?