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の&がに変換されたことに注意して&
ください):
<!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&foo=bar">Foo</a></body></html>
さらに、呼び出し中に$dom->loadHTML($html);
次の警告が出力されました...
警告:DOMDocument :: loadHTML():htmlParseEntityRef:';'が必要です エンティティの行:1
それが何を意味するのかわかりません。
私は何かが足りないのですか?