ブラウザにコンテンツを表示するために XHTML Transitional doctype を使用しています。ただし、コンテンツは表示され、ブラウザーに出力する前に最終的な仕上げを行うために XML パーサー (DOMDocument) を通過します。
私は自分のウェブサイトにカスタム設計された CMS を使用しているため、サイトに変更を加えることができます。WordPress ウィジェットと同様の方法で Web サイトに HTML スクリプトを表示できるモジュールがあります。
私が今直面している問題は、このモジュールを介して提供されるコードが有効な XHTML 形式であることを確認する必要があることです。そうしないと、モジュールがコードを有効な XHTML に変換する必要があります。現在、入力コードの一部が XHTML に準拠していない場合、XML パーサーが壊れて警告がスローされます。
私が探しているのは、URL に存在するエンティティと、TextArea コントロールを介して提供される入力のテキスト部分をエンコードするソリューションです。たとえば、次の文字列はパーサーを壊し、エンティティ参照エラーを発生させます。
<script type="text/javascript" src="http://www.abcxyz.com/foo?bar=1&sumthing"></script>
また、次の行でも同じエラーが発生します。
<a href="http://www.somesite.com">Books & Cool stuff<a/>
PShtmlentities
またはhtmlspecialchars
を使用すると、タグの山かっこも変換されますが、これは必須ではありません。文字列のURLとテキスト部分をエスケープ/エンコードする必要があるだけです。
どんな助けでも大歓迎です。
ありがとう、よろしく、 ワカール・ムシュタク