2016-08-12 11 views
0

こんにちは、挿入、追加のコードが

は、私は、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を持っている削除リンクを追加していること要素のIDが含まれているので、最初にそのIDを見つけて各要素の適切な場所に追加するコードが必要です。

これは私の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

これを行うための最善の方法は、DOMのように、ライブラリを解析し、HTMLを使用してHTMLを解析し、その後、 'text'要素の後にDOMに' '要素を挿入することです。テキストとして出力し、JSONに割り当てます。 – Chloe

+0

もう少し詳しく教えてもらえますか? –

答えて

1

parsing htmlのPHPモジュールがあります。これはあなたが探している答えではないかもしれません。しかし、これはあなたにいくつかのアイデアを与えるでしょう。

$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():Entityですでに定義されているID com、行:file.phpの6行目 –

+0

HTMLでは、同じIDを2回使用することはできません。 Idはその要素を識別するために使用します。だからあなたのtxtファイルをチェックしてください。 – Dan

+0

私は知っているが、なぜ私はこの警告がなぜ理解できないのか、私のHTML thatsに重複したIDはありません。 –

関連する問題