【问题标题】:how do i convert HTML string to JSON with PHP如何使用 PHP 将 HTML 字符串转换为 JSON
【发布时间】:2021-07-04 13:42:36
【问题描述】:

有没有办法使用 PHP 将 HTML 字符串转换为 JSON,就像 toolslick.com html2json 转换器正在做的那样。

这是一个html字符串的例子

<html>
<body>
<table style="width: 100%">
    <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Age</th>
    </tr>
    <tr>
        <td>Jill</td>
        <td>Smith</td>
        <td>50</td>
    </tr>
    <tr>
        <td>Eve</td>
        <td>Jackson</td>
        <td>94</td>
    </tr>
</table>
</body>
</html>

我期待一个像这样的 json:

{
  "html": {
    "body": {
      "table": {
        "@style": "width: 100%",
        "tr": [
          {
            "th": [
              "Firstname",
              "Lastname",
              "Age"
            ]
          },
          {
            "td": [
              "Jill",
              "Smith",
              "50"
            ]
          },
          {
            "td": [
              "Eve",
              "Jackson",
              "94"
            ]
          }
        ]
      }
    }
  }
}

任何建议都会有所帮助,谢谢

【问题讨论】:

  • 你可以使用DOMDocument来解析它。然后编写一个将文档结构转换为 JSON 的递归函数。
  • @Barmar 我在后端接收 HTML 文本
  • 对。 loadHTML() 方法会解析它
  • @Barmar 请对递归函数有任何想法

标签: php html arrays json string


【解决方案1】:

如果 HTML 有效,您可以尝试使用 SimpleXML 和 json_encode 将其解析为 JSON:

$xml = '<html>
<body>
<table style="width: 100%">
    <tr>
        <th>Firstname</th>
        <th>Lastname</th>
        <th>Age</th>
    </tr>
    <tr>
        <td>Jill</td>
        <td>Smith</td>
        <td>50</td>
    </tr>
    <tr>
        <td>Eve</td>
        <td>Jackson</td>
        <td>94</td>
    </tr>
</table>
</body>
</html>';

$xmlObj = simplexml_load_string($xml);

echo json_encode($xmlObj);

https://3v4l.org/TZ4BP

【讨论】:

  • 非常感谢。它似乎正在处理 HTML 的小 sn-p,但是当发送完整的 html 页面时,我收到此错误 simplexml_load_string(): Entity: line 50: parser error : Opening and ending tag mismatch:
  • 如果您收到该错误,它一定是无效的 HTML。没有任何解决方案会奏效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 2017-03-03
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多