2016-08-12 1 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을 구문 분석하고 '텍스트'요소 후 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() : ID com이 이미 Entity에 정의되어 있습니다. line : 36 행의 file.php에 있습니다. –

+0

HTML에서 동일한 ID를 두 번 사용할 수 없습니다. 그 요소를 식별하기 위해 ID를 사용합니다. txt 파일을 확인하십시오. – Dan

+0

나는 알고있다, 그러나 나는 왜이 경고를하는지 이해하지 않는 나의 HTML thats에있는 중복 ID가 없다. –