나는 DOM이 깔끔한 업 - 지저분한-html 태그에 노력하고 있습니다 만, 지금은 더 큰 문제를 실현,Doctype이 HTML에 추가되지 않도록하려면 어떻게해야합니까?
$content = '<p><a href="#">this is a link</a></p>';
function tidy_html($content,$allowable_tags = null, $span_regex = null)
{
$dom = new DOMDocument();
$dom->loadHTML($content);
// other codes
return $dom->saveHTML();
}
echo tidy_html($content);
출력됩니다 전체 DOM,
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><p><a href="#">this is a link</a></p></body></html>
하지만 단지 내가 원하지 않는
<p><a href="#">this is a link</a></p>
반환이 같은 무언가를 원하는
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body>...</body></html>
가능합니까 ??
편집 : 내가 발견
innerHTML
시뮬레이션
, Â
처럼, 내 데이터베이스에 이상한 코드를 생성, ’
<p>Monday July 5th 10am - 3.30pm £20</p>
<p>Be one of the first visitors to the ...at this special event.Â</p>
<p>All participants will receive a free copy of the ‘Contemporary Art Kit’ produced exclusively for Art on....</p>
innerHTML
시뮬레이션,
$innerHHTML = '';
$nodeBody = $dom->getElementsByTagName('body')->item(0);
foreach($nodeBody->childNodes as $child) {
$innerHTML .= $nodeBody->ownerDocument->saveXML($child);
}
그것이 만든 이유 나는 이런 식으로 뭔가를 할 때 휴식 그래서 saveXML($child)
에 의해 발생이 이상한 코드는
$content = '<p><br/><a href="#">xx</a></p>
<p><br/><a href="#">xx</a></p>';
그것은 이런 식으로 뭔가를 반환합니다
<p><a href="#">xx</a></p>
<p><a href="#">xx</a></p>
하지만 뭔가이 원하는 실제로,
<p><a href="#">xx</a></p>
<p><a href="#">xx</a></p>
감사합니다. 나는 tidy_repair_string을 내 코드에 통합하는 방법을 모르지만 ... innerHTML 시뮬레이션은 완벽하게 작동한다. – laukok
은'innerHTML' 시뮬레이션이 이상한 것을 생성한다는 것을 알았습니다. 위의 편집을 참조하십시오. 감사. – laukok
마지막에 인코딩 문제가있는 것 같습니다. UTF-8로 인코딩 된 문자열을 DomDocument로 펌핑해야합니다. 그리고 전에도 줄 바꿈을 표준화 할 수있었습니다.그러나 깔끔한 라이브러리를 읽어야합니다. 수년간의 경험과 인코딩 및 줄 바꿈을 처리해야합니다. – hakre