2014-10-10 83 views
0

希望你能帮我解决一个小问题。HTML代码到JSON帮助的PHP

我看到了这个帖子,但仍得到了一些错误:How to convert HTML to JSON using PHP?

我创建了取出后从WordPress的这一格式

<h1><img src="category1.jpg" />Category 1</h1> 
    <ul> 
    <li>some text.<strong><em>AUTHOR 1</em></strong></li> 
    <li>some other text.<strong><em>AUTHOR 2</em></strong></li> 
    <li>some othe other text.<strong><em>AUTHOR 3</em></strong></li> 
    </ul> 
<h1><img src="category2.jpg" />Category 2</h1> 
    <ul> 
    <li>some new text.<strong><em>AUTHOR 4</em></strong></li> 
    <li>some other new text.<strong><em>AUTHOR 5</em></strong></li> 
    <li>some othe other new text.<strong><em>AUTHOR 6</em></strong></li> 
    </ul> 

一个PHP文件,我试图实现的是JSON对象看起来像这样:

[ 
    { 
    category: "Category 1", content: [ 
             {text: "some text.", author:"AUTHOR 1"}, 
             {text: "some other text.", author:"AUTHOR 2"}, 
             {text: "some other other text.", author:"AUTHOR 3"}, 
            ] 
    }, 
    { 
    category: "Category 2", content: [ 
             {text: "some new text.", author:"AUTHOR 4"}, 
             {text: "some other new text.", author:"AUTHOR 5"}, 
             {text: "some other other new text.", author:"AUTHOR 6"}, 
            ] 
    } 

我需要将它用于Angular模块之后。

有没有解决方案?任何功能?

非常感谢!

+0

标记中没有任何内容表明给定的笔记包含作者或类别信息。我们唯一能做的就是_假设h1标签的内容是一个类别名称,而'li> strong> em'的值是作者,但是这样的假设是非常危险的。另外:告诉我们你试过的东西! – 2014-10-10 13:41:25

+0

非常感谢! 假设我可以接受这些假设,你说没有PHP功能可以完成类似于我想要的结果吗? 我已经尝试json_encode()在很长的字符串,似乎我得到相同的长字符串作为输出。 我也试过这里的答案建议是什么: http://stackoverflow.com/questions/23062537/how-to-convert-html-to-json-using-php 这让我有一点点进一步,但仍然有一些错误“为foreach提供的无效参数()” – 2014-10-10 13:53:16

+0

我建议寻找正则表达式来匹配你以后的各种模式。这将有点烦琐,并涉及各种循环,但应该是可行的。 – Novocaine 2014-10-10 13:57:14

回答

0

看一看的文档SimpleXML

一旦你转换的文档的XML,你可以把它当作一个数组,并做所有元素的foreach。 SimpleXML还允许您将元素视为数组。分离信息后,使用json_encode()构建您的JSON对象。下面是一个简单的方法来导入html代码:

$doc = new DOMDocument(); 

if (! $doc->loadHTML ($html)) //this should contain the html code from the page 

$page = simplexml_import_dom ($doc); 

//do something with $page 

另外,也有相当多的库和为你做这个框架。有关更多信息,请参见post

+0

太棒了!我会阅读关于simpleXML。非常感谢你 – 2014-10-10 14:21:09

+0

@DimaGimburg:SimpleXML并不总是安装在你的脑海里,'DOMDocument'仍然是最广泛支持的扩展(上次我检查)。此外,这里很容易做你需要做的事情[完整的工作示例](https://eval.in/204181) – 2014-10-10 14:22:36

+0

谢谢@EliasVanOotegem这正是我所谈论的。当然不适当的操纵它,以我的方式工作;) – 2014-10-10 14:26:36