【发布时间】:2021-10-18 09:31:15
【问题描述】:
[TL;DR] 需要使用 PHP 解析 html 以提取选项卡和内容
我正在从通过 CSV 文件导出的 Joomla / Hikashop 站点迁移数据。选项卡由 P 标记中的内容定义,如下所示
<p> </p>
<p style="text-align: center;"><span style="text-decoration: underline;"><span style="font-size: 14pt;"><strong>Strong Item</strong></span></span></p>
<p> {tab=Description}</p>
<p>This is a default description</p>
<ul>
<li>It has</li>
<li>mixed content</li>
</ul>
<p>{tab=Features} </p>
<ul style="list-style-type: circle;">
<li>It's good</li>
<li>I like it</li>
</ul>
<p>It does what I want</p>
<p> </p>
<p>{/tabs}</p>
我需要提取标签名称后跟内容。
我可以很容易地拉出标签
$crawler->filterXpath('//p[text()[contains(.,"tab=")]]')->each(function ($node) {
但它让我在选项卡之间获取内容。
描述 =
<ul>
<li>It has</li>
<li>mixed content</li>
</ul>
特点=
<ul style="list-style-type: circle;">
<li>It's good</li>
<li>I like it</li>
</ul>
<p>It does what I want</p>
<p> </p>
显然我可以对其进行正则表达式并循环遍历行等。但这很容易出错
谢谢
【问题讨论】:
-
这是一个示例产品描述,我想用字段名称和选项卡的内容填充 MySQL 数据库
-
我真的不知道有什么好混淆的,返回的内容是选项卡之间的html,选项卡名称是tab=XXX
-
“标签”标记是否始终位于文档的最高级别?或者它们可能嵌套在较低的级别?
-
我认为您需要添加一些额外的逻辑,但这看起来是前进的方向:stackoverflow.com/q/23860883/2943403 和 stackoverflow.com/q/10859703/2943403
-
谢谢,其中一个链接很有帮助,几乎可以满足我的需要。最后一个元素是一个问题,但如果我在传递之前操纵 html,它应该可以正常工作。稍后将编写一些代码,看看它如何处理真实世界的数据
标签: php symfony xpath joomla text-extraction