2011-06-12 1 views
2

예를 들어 내 HTML에 "img"태그가 있습니다. "a"태그에 포장하고 싶습니다.자식 노드 html을 포함한 부모 노드의 HTML 가져 오기 및 인쇄

이렇게하면 모든 것이 정상입니다. 그러나 다음에 이미 포장 된 꼬리표는 다시 포장하고 나쁘다. 내가 이해하고자하는 것은 이미 "a"로 포장 된 "img"입니다.

$doc = new DOMDocument(); 
$doc->loadHTML($article_header); 

$imgs = $doc->getElementsByTagName('img'); 
foreach ($imgs as $img) { 

????? 

} 

그래서 나는이에 의해 "IMG"태그를 얻을 것이다 나는 다음을 사용할 수 있습니다 이것에 대한

.... 이제 "img"의 부모 노드를 가져와 "a"인지 확인하는 방법?

당신은 당신의 foreach 루프의 본문에 다음과 같은 몇 가지 코드를 시도 할 수
+1

어쩌면 'a'를 가져와 이미지가 포함되어 있는지 확인하십시오. – Ibu

+0

이 항목은 기사 편집기에서 작동해야하며 "a"태그로 덮여 있어야하는 이미지가 있습니다. 따라서 먼저 "img"태그를 확인해야합니다. – David

+0

수정 사항을이 질문으로 되돌리십시오. 그렇지 않으면 [기타 질문] (http://stackoverflow.com/questions/6321262/how-to-pass-data-from-domdocument-to-regexp)이 이 사본. 편집 이전의 질문 이었기 때문에 좋은 대답을 얻었으므로 그것을 변경하는 것은 좋은 생각이 아니 었습니다/권장되었습니다. – Mat

답변

1

?????은 다음과 같습니다

if ($img->parentNode->tagName == "a") { ... } 
+0

고마워 .. 시도 할 것입니다 .... 몇 분 안에 답변을 게시 할 것입니다 ... – David

+0

이제 또 다른 문제, 귀하의 코드가 작동하고 나는 다음과 같이 사용> if ($ img-> parentNode-> tagName! = "a") { 하지만 preg_match_all이 객체를 어떻게 제공합니까? 나는 $ img을 사용하면 곧바로 그것을 사용할 수 없다. echo $ img는 아무것도주지 않는다. – David

+0

첫 번째 메시지에서 코드를 업데이트했다. 지금 확인해 보자. – David

1

...

if ($img->parentNode->tagName == 'a') { 
    continue; 
} 

:

+0

첫 번째 메시지에서 코드를 업데이트했습니다. 지금 확인하십시오. – David

0

다음은 그것을 분명히, 제일 먼저 확인 작동 할 수 있습니다 확인

foreach ($imgs as $img) { 

    if(!$img.packed) { 
     .... //packing code 
     $img.packed = true; 
    } 

} 
+0

OP는'img' 태그의 부모 노드가'a' 태그인지 확인하는 방법을 묻습니다. 여러분의 답이 문제와 관련이 있기 위해서는'$ img.packed' [sic;의 값을 결정하는 데 필요한 코드를 제공해야합니다. PHP 구문은 간접적 인 경우'.'가 아니라'-> '를 사용합니다. –

+0

@Phoenix : PHP라는 것을 알지 못했습니다. 그때까지는 javascript로 태그를 붙였습니다. 너무 심하게 나는 구문을 알아 채지 못했습니다. –

관련 문제