html構文ドキュメントとバリデーターでの試行錯誤に基づいて、HTML属性名で許可される文字は次のとおりです。
- 英数字
- ハイフン
- アンダースコア
- 期間
たとえば、これらは検証します:
<p data-éxample>
<p data-1.5>
属性名をサニタイズするための関数を書きたい:
<?php
function sanitize_attr_name ( $name ) {
return is_string($name) ? preg_replace( '/[^\w\-\.]/', '', $name ) : '';
}
これは、特殊な英字を除いて機能します。
sanitize_attr_name( 'data-éxample' ); // 'data-xample'
今では、誰かがそのような文字を使用するのはおかしなことに思えるかもしれませんが、cssがエスケープされているかどうかを検証していないように見えますが、実際には機能します。
PHPでそれをどのように実現しますか?特殊なアルファ文字を使用できるようにサニタイザーをどのように作成できますか?それは正規表現を介して可能ですか?そして、なぜctype_graph('é')
間違っているのですか?