2016-08-12 3 views
0

Привет,Вставьте дополнительный код в загруженных данных JSon

Я загрузке некоторых данных в формате JSON, но мне нужно, чтобы вставить некоторые дополнительные данные, основанные на данных, которые загружены. Это пример данных, как он будет загружен

{"markup":"<li id=\"com1\">some content</li><li id=\"com2\">some more content</li>"} 

и это ожидаемый конечный результат:

<li id="com1">some content <a href="delete=com1">DELETE</a></li> 
<li id="com2">some content <a href="delete=com2">DELETE</a></li> 

, как вы можете видеть, я добавляю ссылку удалить, которая имеет URL, который содержит идентификатор элемента, поэтому мне нужен код, чтобы сначала найти этот идентификатор, а затем добавить его в нужное место для каждого элемента.

Это мой PHP код:

$json = file_get_contents("data.txt"); 
$jsonIterator = new RecursiveIteratorIterator(
    new RecursiveArrayIterator(json_decode($json, TRUE)), 
    RecursiveIteratorIterator::SELF_FIRST); 

foreach ($jsonIterator as $key => $val) { 
    echo $val; 
    } 

Что лучший и самый простой способ сделать это?

спасибо.

+0

Лучший способ сделать это, чтобы разобрать HTML с использованием HTML разборе библиотеки, как в DOM, а затем вставить '' элементов в DOM после 'Text' элемента. Затем верните его в виде текста и верните его в JSON. – Chloe

+0

Вы хотите разработать немного больше, пожалуйста? –

ответ

1

Существует модуль php для parsing html. Возможно, это не тот ответ, который вы ищете. Но это даст вам некоторую идею.

$str = file_get_contents("data.txt"); 
$data = json_decode($str,true); 
$html = $data["markup"]; 
$dom = new DOMDocument; 
$dom->loadHTML($html); 
$lis = $dom->getElementsByTagName('li'); 
foreach ($lis as $li) { 
    $a = $dom->createElement('a','DELETE'); 
    $a->setAttribute('href','delete='.$li->getAttribute('id')); 
    $li->appendChild($a); 
} 
$final = $dom->saveHTML(); 
echo $final; 
+0

Благодарим вас за подробный ответ. Только один вопрос. Хотя вывод кажется правильным, я получаю несколько предупреждений: Предупреждение: DOMDocument :: loadHTML(): ID com уже определен в Entity, строка: 36 в file.php в строке 6 –

+0

В HTML вы не можете использовать один и тот же идентификатор дважды. Id используется для идентификации этого элемента. Поэтому проверьте файл txt. – Dan

+0

Я знаю, но у меня нет дубликатов идентификаторов в моем html, поэтому я не понимаю, почему это предупреждение. –

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