2013-07-12 3 views
1

다른 솔루션과 비슷하게 보였지만 다른 곳에서는 직접 코드로 작업 할 수 없었습니다.PHP nodevalue html 태그를 벗기기

나는 단락 태그 사이에 html 문자열을 분할하고 배열로 반환하는 함수가 있습니다. 다음과 같이 코드

$dom = new DOMDocument(); 
$dom->loadHTML($string); 
$domx = new DOMXPath($dom); 
$entries = $domx->evaluate("//p"); 
$result = array(); 
foreach ($entries as $entry) { 
    $result[] = '<' . $entry->tagName . '>' . $entry->nodeValue . '</' . $entry->tagName . '>'; 
} 

return $result; 

사람은 완전한 HTML 태그와 단락의 내용을 반환합니다 있도록이에서 nodeValue를 요소를 제거하기 위해 나를 도와 드릴 수 있습니다 ...인가? http://adam-makes-websites.com/tests/htmltest/test.html

  • (이 ownerDocument-> saveHTML 적용 사용하는 제안의 약자로) 어떤 메신저 코드와 함께 일의 전체 테스트가 여기에 있습니다 :

  • +0

    중복 가능성 [PHP DOMDocument를 + :? outerHTML에 요소 (http://stackoverflow.com/questions/5404941/php-domdocument-outerhtml- 에드 ownerDocument 재산 saveHTML를 불러 for-element) – hakre

    답변

    4

    당신은 네브라스카

    $result[] = $entry->ownerDocument->saveHTML($entry); 
    
    +0

    @AdamJones - Orangepill의 코드를 실행했는데'saveXML '로 정상적으로 작동했습니다. –

    +0

    @ PédeLeão 콘텐츠가 잘 형성되지 않은 경우 saveXML에 바보가 될 수도 있다고 생각했습니다. 나는 유효한 HTML을 알고있다! = 유효한 XML – Orangepill

    +0

    HTML을 저장하지 마십시오. 어느 쪽이든 그것을 두려워하지 마십시오. 나는 지금 질문에 HTML을 추가했다 ... – AdamJones

    2
    $dom = new DOMDocument(); 
    $dom->loadHTML($string); 
    $entries = $dom->getElementsByTagName('p'); 
    $new_dom = new DOMDocument(); 
    foreach ($entries as $entry) { 
        $new_dom->appendChild($new_dom->importNode($entry, TRUE)); 
    } 
    $result = $new_dom->saveHTML() 
    
    +0

    이것은 아무런 내용을 반환하지 않습니다. – AdamJones

    +0

    @AdamJones - 방금 문제없이 다시 실행했습니다. –

    +0

    Ive가 html Im에 대한 링크를 추가했습니다 (문자열 변수 내에서).이 코드가 도움이된다면 코드가 실행됩니다. – AdamJones

    관련 문제