3

DOMDocumentを使用して、ユーザーが提供したHTMLブロックをロードし、それらを操作しています。DOMDocumentがhtmlentitiesを介してhref属性内のURLを実行しているように見えます(私がすべてを正しく行っていると仮定します)。これにより、クエリ文字列にアンパサンドが含まれるアンカータグが正しく表示されなくなります。

例:

$html = <<<HTML
<a href="http://foo.com?bar=baz&foo=bar">Foo</a>
HTML;

$dom = new DOMDocument;
$dom->loadHTML($html);

echo $dom->saveHTML();

出力は次のようになります(URLの&がに変換されたことに注意して&amp;ください):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><a href="http://foo.com?bar=baz&amp;foo=bar">Foo</a></body></html>

さらに、呼び出し中に$dom->loadHTML($html);次の警告が出力されました...

警告:DOMDocument :: loadHTML():htmlParseEntityRef:';'が必要です エンティティの行:1

それが何を意味するのかわかりません。

私は何かが足りないのですか?

4

1 に答える 1

2

アンパサンド記号は、HTMLエンティティ文字を決定するために有効/準拠のXHTMLで使用されます。

この参照リストを参照してください: http ://www.w3schools.com/tags/ref_entities.asp

DOMDocumentは、途中で無効な文字定義を検出し、途中で修正したため、文句を言っています。

于 2012-12-06T23:00:47.340 に答える