DOMDocument의 바깥 HTML을 반환하는 방법?
PHPDOMDocument의 바깥 HTML을 반환하는 방법?
문자열 내부의 비디오 링크를 대체하려고합니다. 여기 내 코드가 있습니다.
$doc = new DOMDocument();
$doc->loadHTML($content);
foreach ($doc->getElementsByTagName("a") as $link)
{
$url = $link->getAttribute("href");
if(strpos($url, ".flv"))
{
echo $link->outerHTML();
}
}
불행히도, 와 같은 전체 하이퍼 링크에 대한 html 코드를 얻으려고 할 때 outerHTML이 작동하지 않습니다.
어떤 아이디어가 이것을 달성하는 방법?
해결법
-
==============================
1.PHP 5.3.6부터 saveHtml에 노드를 전달할 수 있습니다.
PHP 5.3.6부터 saveHtml에 노드를 전달할 수 있습니다.
$domDocument->saveHtml($nodeToGetTheOuterHtmlFrom);
이전 버전의 PHP는 그러한 가능성을 구현하지 못했습니다. saveXml ()을 사용해야하지만 XML 준수 마크 업을 생성합니다. 요소의 경우에는 문제가되지 않습니다.
http://blog.gordon-oheim.biz/2011-03-17-The-DOM-Goodie-in-PHP-5.3.6/을 참조하십시오.
-
==============================
2.PHP Manual의 DOM 섹션에있는 사용자 노트에서 두 가지 명제를 찾을 수 있습니다.
PHP Manual의 DOM 섹션에있는 사용자 노트에서 두 가지 명제를 찾을 수 있습니다.
예를 들어, xwisdom이 올린 글은 다음과 같습니다.
<?php // code taken from the Raxan PDI framework // returns the html content of an element protected function nodeContent($n, $outer=false) { $d = new DOMDocument('1.0'); $b = $d->importNode($n->cloneNode(true),true); $d->appendChild($b); $h = $d->saveHTML(); // remove outter tags if (!$outer) $h = substr($h,strpos($h,'>')+1,-(strlen($n->nodeName)+4)); return $h; } ?>
-
==============================
3.최선의 해결책은 outerhtml을 돌려 줄 함수를 정의하는 것입니다.
최선의 해결책은 outerhtml을 돌려 줄 함수를 정의하는 것입니다.
function outerHTML($e) { $doc = new DOMDocument(); $doc->appendChild($doc->importNode($e, true)); return $doc->saveHTML(); }
코드에서 사용할 수있는 것보다
echo outerHTML($link);
from https://stackoverflow.com/questions/5404941/how-to-return-outer-html-of-domdocument by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
PHP로 큰 JSON 파일 처리하기 (0) | 2018.09.13 |
---|---|
데이터베이스 Vs 파일 시스템에 파일 저장 (0) | 2018.09.13 |
PHP : 움라우트를 UTF-8 문자열에서 가장 가까운 7 비트 ASCII로 바꾸십시오. (0) | 2018.09.13 |
업로드시 보안 위협 (0) | 2018.09.13 |
Google API 클라이언트로 토큰을 새로 고치는 방법은 무엇입니까? (0) | 2018.09.13 |