如何在 PHP 中从 HTML 列表中提取结构化文本?

2024-01-07

我有这个字符串:

<ul>
  <li id="1">Page 1</li>
  <li id="2">Page 2
    <ul>
      <li id="3">Sub Page A</li>
      <li id="4">Sub Page B</li>
      <li id="5">Sub Page C
        <ul>
          <li id="6">Sub Sub Page I</li>
        </ul>
      </li>
    </ul>
  </li>
  <li id="7">Page 3
    <ul>
      <li id="8">Sub Page D</li>
    </ul>
  </li>
  <li id="9">Page 4</li>
</ul>

我想用 PHP 分解所有信息,使其像:

----------------------------------
| ID | ORDER | PARENT | CHILDREN |
----------------------------------
|  1 |   1   |   0   |     0     |
|  2 |   2   |   0   |   3,4,5   |
|  3 |   1   |   2   |     0     |
|  4 |   2   |   2   |     0     |
|  5 |   3   |   2   |     6     |
|  6 |   1   |   5   |     0     |
|  7 |   3   |   0   |     8     |
|  8 |   1   |   7   |     0     |
|  9 |   4   |   0   |     0     |
----------------------------------

有关更多信息,这就是此列表对我的意义:

ID 1 为第 1 位(第 1 页),有 0 个父母和 0 个孩子,

ID 2为第2(第2页),有0个父母和孩子ID为3,4,5,

ID 3 是第 1 个(子页面 A),并且有父 ID 2 和 0 个子页面,

ID 4 是第二个(子页面 B),并且有父 ID 2 和 0 个子项,

ID 5 是第三个(子页面 C),并且具有父 ID 2 和子 ID 6,

ID 6 是第 1 个(子页面 I),并且有父 ID 5 和 0 个子项,

ID 7 排在第 3 位(第 3 页),有 0 个父母和 ID 8 的孩子,

ID 8 是第 1 个(子页面 I),并且有父 ID 7 和 0 个子项,

ID 9 排在第 4 位(第 4 页),有 0 个父母和 0 个孩子。

如果这太难了,任何人都可以建议如何使用另一种方法从此字符串中获取该信息吗?


那不是“字符串”,而是 HTML。您需要使用 HTML 解析器,例如DOM文档 http://php.net/manual/en/class.domdocument.php or simple_html_dom http://simplehtmldom.sourceforge.net/.

请参阅示例http://htmlparsing.com/php.html http://htmlparsing.com/php.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中从 HTML 列表中提取结构化文本? 的相关文章

  • 如何配置 nginx 重写规则以使 CakePHP 在 CentOS 上运行?

    大家好 请帮帮我 我正在尝试在运行 Nginx 和 Fact CGI 的 Centos 服务器上设置 cakephp 环境 我已经在服务器上运行了一个 WordPress 站点和一个 phpmyadmin 站点 因此我已经正确配置了 PHP
  • 将 #RRGGBB 十六进制值转换为 #AARRGGBB

    414141 与 AARRGGBB 的值是什么 52b531 又如何 我如何使用 PHP 转换它 Regards 奔腾10 AA 是 Alpha 通道 直接转换是将 AA 设置为 FF 以使其完全不透明 414141 becomes FF4
  • PHP-MySQLi 连接随机失败并显示“无法分配请求的地址”

    大约两周以来 我一直在处理 LAMP 堆栈中最奇怪的问题之一 长话短说 与 MySQL 服务器的随机连接失败并显示错误消息 Warning mysqli real connect HY000 2002 Cannot assign reque
  • Laravel 5.4 将json保存到数据库

    帮我将 json 保存到数据库 表字段类型 文本 我有带有强制转换数组的模型 class Salesteam extends Model protected casts team members gt array 我想要像这样 index
  • 禁用外部点击时关闭模式

    我正在制作一些使用模式的博客物质化 但我的模态 onclick 外部和错误数据有问题 这是我的代码 main js function changepassword var user userlog val var content conte
  • zend 表单验证

    我想知道 Zend Form 如何验证输入 我的意思是它如何知道要验证哪些输入字段 我查看了 php 全局变量 POST GET 但没有看到任何设置为标识符 例如 的内容 以便了解如何验证 有人能给我推荐一些关于这些东西的指南吗 好吧 找出
  • DataTables 第 2 页的分页未调用放大弹出窗口

    所以我有这个启用分页的数据表 我编码了一种方式 以便用户可以编辑表的行 当用户调用它在放大弹出窗口中打开的编辑页面时 它在第 1 页 从第 2 页起都运行良好 DataTable 及其前面停止调用 Magnific Popup 我只是不明白
  • Symfony 生成器形式、原则和 M:N 关系

    我有一个基本的 M N 设置 包含三个表 candidate position 和 Candidate position 这是 MySQL Workbench 的 ERD 屏幕截图 现在 我们继续讨论表单 在 symfony 生成器的默认世
  • 使用第三方库记录来自 PHP 应用程序的所有 cURL 请求

    好吧 我的 PHP Yii2 应用程序遇到了困难 我需要记录来自应用程序的每个传入和传出请求 传入的请求可以轻松地记录在 PHP 本身中 在引导阶段添加一些处理程序 这很容易 但真正的问题是我正在使用许多第三方库 即 Amazon MWS
  • 写入 xml 文件时允许的内存大小已耗尽(尝试分配 4459414 字节)[重复] 67108864 字节

    这个问题在这里已经有答案了 可能的重复 php 中允许的内存大小已耗尽 尝试分配 43148176 字节 33554432 字节 https stackoverflow com questions 415801 allowed memory
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • Zend RegEx Validator 的自定义有意义的错误消息

    我正在验证表单中的文本字段 如下所示 name new Zend Form Element Text name name gt setLabel First Name gt setRequired true gt addFilter new
  • 为什么 asort 适用于多维数组?

    抱歉 如果这是一个非常基本的问题 我无意中发现asort http php net manual en function asort php似乎适用于多维数组 示例 PHP animals array 1 gt array name gt
  • 彩色 var_dump() 和错误

    我怎样才能将样式设置为var dump 功能和PHP错误样式 如下图所示 目前我有下一个观点var dump with pre var dump pre 没有它将全部在一行中 并且只是纯文本的错误 我搜索了一些 PHP 颜色错误 var d
  • Lumen:无法打开流:.../vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php:107 中的权限被拒绝

    My OS is ubuntu 16 04 and I am running Lumen 5 5 When I try to run the app in the browser I get an error 500 我在 var log
  • 自定义 WordPress 画廊 html 布局

    当使用默认媒体上传器在 WordPress 中创建图像库时 WordPress 将图像包装在一堆 HTML 标记中 如何在生成之前覆盖它 以便我可以输出所需的标记并更改创建图库布局的方式 目前 WordPress 生成的代码如下 div d
  • 将 echo 和 print 合并到一个语句中

    echo 1 print 2 3 返回 214 脚本如何以 14 结尾 当你这样做时 echo 1 print 2 3 PHP 会做 demo http codepad viper 7 com OfrNrs line op fetch ex
  • PHP-如何根据条件配对数组中的项目

    如何将数组中的项目配对 假设我有一个数组Fighters 我想根据他们的情况将他们配对Weights 体重最接近的拳手应作为配对最佳匹配 但如果他们是在同一个团队中 他们不应该配对 团队 1 战斗机A体重为60 战斗机B体重为65 2队 战
  • 使用 Xpath 进行部分匹配

    我正在尝试创建一个搜索功能 允许使用 Xpath 按歌曲标题或流派进行部分匹配 这是我的 XML 文件
  • WordPress - 类别和子类别的嵌套列表

    我正在尝试显示带有嵌套子类别的 WordPress 类别列表 到目前为止 我只能获取父类别列表或不包括父类别的子类别列表 但我无法将两者连接在一起 这是我想要创建的结果 Parent Category 子类别 子类别 Parent Cate

随机推荐

  • Python、Windows 和多重处理

    我有一个最初在 Linux 上构建的 Python 程序 现在我正尝试将其移植到 Windows 我在包含所有依赖项的虚拟环境中运行该程序 我的程序使用 pip install find linkswheelsmy module 作为轮子安
  • 为什么这个普通的 js 函数在 d3v3 和 d3v4 中返回不同的结果

    这是一个基于一些从令人惊叹的 d3 js v3 到 v4 的模板的 MWE 数据位于 csv 文件中 两个示例都加载相同的文件 干净 day movie1 movie2 movie3 movie4 movie5 movie6 1 20 8
  • 识别发生特定模式变化的行

    简介 背景 我需要分析 spss 数据表中的受访者数据 但我认为最好将这些数据复制到 Excel 或 Google 表格中 以进行我即将描述的特定分析 600 多名参与者被要求回答 100 个问题 每个参与者在数据中都有自己的行 他们对问题
  • 为什么我会收到“拆分包”警告?

    我正在构建一个 kar 文件 但是当我运行时mvn package我收到此错误 INFO maven bundle plugin 2 4 0 bundle default bundle common WARNING Bundle se em
  • 如何重命名物理数据库文件

    我使用 tsql 来分离数据库 如下所示 EXEC sp detach db dbname my db 然后我使用 PHP 来重命名物理文件 我能够重命名 mdf 文件 但不能重命名 ldf 文件 我什至尝试过dos命令REN但这对于 ld
  • R Shiny - 错误:没有名为“shinyjs”的包

    当我在本地运行我的应用程序时 它运行得很好 但是当我将它托管在闪亮应用程序io出现这个错误 发生了错误 应用程序无法启动 value 3L 中的错误 没有名为 shinyjs 的包 调用 本地 tryCatch gt tryCatchLis
  • 如何在巨大的 XML 文件中进行命令行 XPath 查询?

    我有一个 XML 文件集合 其中一些文件非常大 最多约 5000 万个元素节点 我在用xmllint用于验证这些文件 由于流 API 即使对于巨大的文件 它也能很好地工作 xmllint loaddtd stream valid path
  • distanceFromLocation 方法如何工作?

    我经常使用distanceFromLocation方法用于CLLocation对象来获取与其他位置的距离 枚举 CLLocations 数组 然后使用此方法将每个位置与我的参考位置进行比较 我很想知道使用的处理 内存影响distanceFr
  • Makefile 中的通配符目标

    如何压缩以下 Makefile 目标 GRAPHDIR Complex png GRAPHDIR Complex dot dot GRAPHDIR Complex dot Tpng o GRAPHDIR Complex png GRAPHD
  • Searchkick + Bloodhound + Typeahead 用于自动完成

    我正在尝试实施一个简单的自动完成功能对于单个属性 Model searchkick text start name autocomplete name 重新索引行为后Rails 控制台没问题 2 2 0 p0 002 gt Doctor s
  • Spring Boot Yarn - 传递命令行参数

    我正在尝试在 Spring Boot Yarn 应用程序中传递命令行参数 但遇到了困难 我知道我可以在 yml 文档中设置这些spring yarn appmaster launchcontext arguments但如何从命令行呢 喜欢j
  • 结合和敲除中的可见结合有什么区别?

    ko 绑定和 data bind visible sometext 绑定 两种绑定都执行相同的操作 哪一种使用效率最高 哪一种最好 虚拟元素 不能用于更改元素的样式 因为没有绑定 dom 元素 e g 当您无法添加额外元素时 对于控制流程很
  • LOGO 编程语言的 EBNF 或 BNF

    有谁知道我在哪里可以获得 BNF 或 EBNFLOGO http en wikipedia org wiki Logo 28programming language 29编程语言 BNF 语法在某些情况下可能不太有用 编写一个与现有 历史实
  • 如何将 Chrome 扩展 Api 与 Angular 结合使用?

    我正在开发一个 chrome 扩展 我有一个 background js 它会过滤 url 并从我的 api 获取数据 当条件满足时 我将从 发送一条消息background js 我想抓住它Angular component 背景 js
  • 使用 useState 存储来自 useQuery 的数据

    我正在使用 React hooks 来获取 GraphQL 数据react apollo并存储本地状态 const userData setUserData useState const loading error data useQuer
  • 如何在 Sass 字符串插值中使用单个反斜杠

    我想用一个生成这个CSSUnicode字符代码 foo before content 4556 连接单个 未转义的 反斜杠 与代码 例如4556 主要条件是我不想提供已经在前面加上反斜杠的 Unicode 代码 例如 4556 但是例如从整
  • 在 Vaadin 中将组件创建为静态工厂样式(单例)

    我想创建自定义Window https vaadin com api com vaadin ui Window html使用静态工厂样式 或使用单例模式 public class MyWindow extends CustomCompone
  • 强制 C# 应用程序在具有多核处理器的 PC 中使用单核

    我在我的 C 应用程序中使用 Haptek People Putty 播放器 我在论坛上看到人们说它不能很好地与多核处理器配合使用 我的应用程序在我的 Core 2 Duo 笔记本电脑上运行良好 但当我尝试在四核台式机上运行它时 它会滞后很
  • 可变参数模板、类型推导和 std::function

    我正在尝试创建一个模板函数 可以向该函数传递具有任何类型和数量的参数的其他函数 并将其绑定到std function 我设法做到了这一点 include
  • 如何在 PHP 中从 HTML 列表中提取结构化文本?

    我有这个字符串 ul li Page 1 li li Page 2 ul li Sub Page A li li Sub Page B li li Sub Page C ul li Sub Sub Page I li ul li ul li