Как предотвратить добавление doctype в HTML?

Я работаю над этими tid-up-messy-html тегами с DOM, но теперь я понимаю большую проблему,

$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 моделирование 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> 

Если вы работаете над фрагментом, вам обычно требуется только содержимое тела.

DomDocument в PHP не предлагает что-то вроде innerHTML . Вы можете имитировать это:

 $innerHHTML = ''; $nodeBody = $dom->getElementsByTagName('body')->item(0); foreach($nodeBody->childNodes as $child) { $innerHTML .= $nodeBody->ownerDocument->saveXML($child); } 

Если вы просто хотите отремонтировать фрагмент, вы также можете использовать аккуратную библиотеку :

 $html = tidy_repair_string($html, array('output-xhtml'=>1,'show-body-only'=>1)); 

Хакре уже упомянул вариант show-body-only для HTML Tidy, который, вероятно, вы хотите.

Ps. Вот конфигурационный файл Tidy, используемый MediaWiki для этой цели.