次の文字列を考えてみましょう。UTF-16-LE でエンコードされ、PHP 変数に保存されます。mbstring または iconv で ' を一重引用符に置き換えることができませんでした。それを消毒する良い方法は何でしょうか。
弦:カール・セーガン'
のコズミック・コネクション
私が質問を誤解していない限り'
、UTF-16の問題ではありません。その文字列はそれを持っているhtmlspecialchars()
かhtmlentities()
実行されており、一重引用符は html エンティティ表現に変換されました'
。
通常の状態に戻すには、 html_entity_decode()を実行する必要があります。
一般に、出力時にのみ html エンコーディングを実行する必要があるため、その種の変換を永続化することは避けます。この種の文字列を取得するためにどこかで HTML 入力を取り込んでいる場合は、UTF 変換と保存を行う前に、おそらくエンティティをデコードする必要があります。