私は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>
のみ
これは可能ですか?
編集:私は見つけた
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