2014-10-10 4 views
0

надеюсь, что вы можете помочь мне решить небольшую проблему.Код HTML для JSON с помощью php

я видел этот пост, но все еще есть некоторые ошибки: How to convert HTML to JSON using PHP?

Я создал 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> 

что я пытаюсь достичь 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"}, 
            ] 
    } 

Мне нужно использовать его для модулей с угловым модулем.

Есть ли решение для этого? любая функция?

большое спасибо!

+0

В этой разметке нет ничего, чтобы предположить, что данное примечание содержит автора или информацию о категории. Единственное, что мы делаем: _Assume_, что содержимое тега h1 является именем категории, а значение 'li> strong> em' является автором, но такие предположения чрезвычайно рискованны. Также: покажите нам, что вы пробовали! –

+0

большое спасибо! скажем, я могу жить с этими предположениями, вы говорите, что нет существующей функции PHP, которая делает что-то похожее на результат, который мне нужен? Я пробовал json_encode() на очень длинной строке и кажется, что я получаю такую ​​же длинную строку, как и вывод. также я пробовал, что предложено в ответах здесь: http://stackoverflow.com/questions/23062537/how-to-convert-html-to-json-using-php , который дал мне небольшой шаг но все же получили некоторые ошибки «недопустимый аргумент, предоставленный foreach()» –

+0

Я бы предложил искать регулярные выражения, чтобы соответствовать различным шаблонам, которые вы используете. Это было бы немного затруднительно и включать различные циклы, но должно быть выполнимым. – Novocaine

ответ

0

Посмотрите на документацию для SimpleXML

После того, как вы преобразовали документ XML, вы можете рассматривать его как массив и сделать Еогеасп на всех элементах. 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.Большое спасибо –

+0

@DimaGimburg: SimpleXML не всегда установлен вам, 'DOMDocument' по-прежнему является расширением с самой широкой поддержкой (последний раз, когда я проверил). Кроме того, очень просто сделать то, что вам нужно сделать здесь [Полностью рабочий пример] (https://eval.in/204181) –

+0

спасибо @EliasVanOotegem, это именно то, о чем я говорил. конечно, плохо манипулировать им, чтобы работать на моем пути;) –

Смежные вопросы