2009-11-25 2 views
1

일부 HTML을 실행하고 "A"태그의 모든 인스턴스 주위에 일부 맞춤 태그를 삽입하려고합니다. 지금까지 해왔지만 링크 태그에 실제로 내 가짜 태그를 추가하는 마지막 단계는 나에게 도움이되지 않는다.PHP - dom appendChild() - PHP DOM을 사용하여 선택된 html 태그 주위에 문자열 추가하기

모든 코드는 마지막 코드 행까지 작동합니다. 이것이 내가 붙어있는 부분입니다. 선택한 "A"태그의 양쪽에 이러한 의사 태그를 배치하려면 어떻게합니까? 페이지 출력을 -

<a href="xxx" name="yyy">text</a> 

%%yyy%%<a href="xxx" name="yyy">text</a>%%/yyy%% 

로 전환 그러나 현재는 아무것도 표시되지 않습니다

$dom = new domDocument; 
$dom->loadHTML($section); 
$dom->preserveWhiteSpace = false; 
$ahrefs = $dom->getElementsByTagName('a'); 
foreach($ahrefs as $ahref) { 
    $valueID = $ahref->getAttribute('name'); 
    $pseudostart = $dom->createTextNode('%%' . $valueID . '%%'); 
    $pseudoend = $dom->createTextNode('%%/' . $valueID . '%%'); 
    $ahref->parentNode->insertBefore($pseudostart, $ahref); 
    $ahref->parentNode->appendChild($pseudoend); 
    $expression[] = $valueID; //^$link_name[0-9a-z_()]{0,3}$ 
    $dom->saveHTML(); 
} 
//$dom->saveHTML(); 

나는 다음이 수행 얻을 수 있었으면 해요 소스에 추가 된 대체 노드 나 노드는 없습니다. ahref 노드가 포장되어 있는지 확인하기 위해

+0

당신은 내 편집 제안을 시도해 봤어? – jensgram

+0

히야 그래 그냥 시도 - 이전과 같은 오류! – MrFidge

+0

OK는 새로운 상황을 반영하기 위해 위의 내용을 완전히 업데이트했습니다. 실제로이 작업을해야하는데 다른 방법은 없습니다. – MrFidge

답변

1

은 ...

foreach($ahrefs as $ahref) { 
    $valueID = $ahref->getAttribute('name'); 
    $pseudostart = $dom->createTextNode('%%' . $valueID . '%%'); 
    $pseudoend = $dom->createTextNode('%%/' . $valueID . '%%'); 
    $ahref->parentNode->insertBefore($pseudostart, $ahref); 
    $ahref->parentNode->insertBefore($ahref->cloneNode(true), $ahref); // Inserting cloned element (in order to insert $pseudoend immediately after) 
    $ahref->parentNode->insertBefore($pseudoend, $ahref); 
    $ahref->parentNode->removeChild($ahref); // Removing old element 
} 
print $dom->saveXML(); 
+0

히야 - 위 참조 - 여전히 동일한 오류를 보여준다 : S – MrFidge

+0

히야, description을 완성한 다음, $ pseudostart를 앞에 놓기를 원한다. – MrFidge

+2

이 경우'insertBefore()'와'appendChild()'('ahref'의 부모)를 사용하여 textNodes로 "의사 요소"를 추가하고 싶을 것입니다. – jensgram