4

データベース入力をサニタイズしようとしていますが、Ⓡ 文字に問題があることがわかりました。

Ⓡ に変換

Ⓡ

変数の周りに html_entity_decode があっても。

フィールドはデータベースで 4 文字しか許可されていないため、これは問題です。

® 実際には動作しますが、1 文字として扱われます。

Ⓒ vs © でも同じ問題があります。

私の知る限り、それらは単なる html エンティティであるため、デコードする必要があります。ただし、それらは htmlspecialchars() でエンコードされていません。コードをエコーアウトするだけです

Ⓡ

PHPにはこれを解決するための組み込み関数がありますか? ありがとう

私がやろうとしていることを言うために編集してください:

以下の表に表示されるデータベースに入力して追加するテキスト フィールドがあります。< > & などの他の文字を入力すると、1 文字としてデータベースに直接入力されます。

Ⓡ と Ⓒ も (6 ではなく) 常に 1 文字として入力するようにしています。

特定の文字がウェブサイトを壊さないように、表の出力でのみエンコードしています。

4

1 に答える 1

2

使用時にエンティティがデコードしないという問題は、指定されたターゲット文字セットがまだデフォルトの ISO-8859-1 でhtml_entity_decodeある可能性があります。ISO-8859-1 は "Ⓡ" (丸印の R) をエンコードできませんが、"®" (登録商標) はエンコードできます。html_entity_decode

したがって、まず、正しくデコードするには:

html_entity_decode('&#9415;', ENT_COMPAT, 'UTF-8')

しかし第二に、"Ⓡ" と "®" は同じ文字ではなく、おそらく "Ⓡ" は必要ありません。

于 2013-07-05T14:32:32.360 に答える