1
나누기 왜 것이 코드 :이 코드에PHP DOMDocument를 saveHTML 포맷
이<p><img alt="fluid cat" src="/images/tmp/fluid-cat.jpg"></p><p><img alt="pandas" src="/images/tmp/pandas.jpg"></p>
결과 :
<p><img alt="fluid cat" src="/images/full/2016-09/fluid-cat.jpg"><p><img alt="pandas" src="/images/full/2016-09/pandas.jpg"></p></p>
것은 왜 모두 IMG을 배치 않습니다이 코드를 실행
$doc = new DOMDocument();
$doc->loadHTML($this->content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$imgNodes = $doc->getElementsByTagName('img');
if ($imgNodes->length > 0) {
$inlineImage = new Image();
$inlineImage->setPublicDir($publicDirPath);
foreach ($imgNodes as $imgNode) {
$inlineImage->setUri($imgNode->getAttribute('src'));
$inlineImage->setName(basename($inlineImage->getUri()));
if ($inlineImage->getUri() != $dstPath.$inlineImage->getName()) {
$inlineImage->move($dstPath);
$imgNode->setAttribute('src', $dstPath.'/'.$inlineImage->getName());
}
}
$this->content = $doc->saveHtml();
}
첫 번째 p 블록 안의 태그?
html 샘플에 루트 요소가 없기 때문에. Libxml은 첫 번째 p가 루트 요소라고 가정하고 자동 수정을 수행합니다. "고아"닫는 p 태그를 제거하고 닫는 태그를 "좋은 위치", 즉 끝에 배치합니다. 이 문제를 해결하려면 가짜 루트 요소 (예 :'
DomDocument가 HTML의 형식을 올바르게 지정하려고합니다. img 태그 끝 부분에'/'를 추가하여 자동 닫음을 시도하십시오. – bassxzero
'loadHTML()'과'saveHTML()'은 실제로 무너지고 실제로 쓸모가 없습니다. [html5lib-php] (https://github.com/html5lib/html5lib-php)와 같은 타사 HTML 파서와 사용자 정의 HTML 코드 생성기를 사용해보십시오. –