3

入力しているテキストには、いくつかの上向き矢印と下向き矢印(↑と↓)、およびプラス/マイナス記号(±)が含まれています。

これらの特殊文字は、HTMLASCIIとして入力されます↑ ↓ ±。POSTでは、HTMLはMySQLテーブルに保存される前にhtmlentitiesで処理されます。

$data   = htmlentities($data,ENT_QUOTES);

上向き矢印と下向き矢印の記号は黒い矢印に変換されないことに注意してください。データをPOSTした後、戻って同じテキストを編集します。HTMLソースコードに↑とが表示されます。↓のみが±黒い疑問符に変換されます。

MySQLに保存されたテキストをチェックすると、3つのシンボルすべてが次のように保存されていることが確認されます(これはhtmlentitesが適用された後):↑ ↓および±

次に、PHPアプリケーションはunhtmlentities($ data)[以下]を使用してエンティティをシンボルに変換し直します。これはとで正常に機能↑↓ます。これが私が負けているところです±

unhtmlentities:

function unhtmlentities ($string) {
    // Restores HTML code to inserted data
    // use when pulling from Database
    $trans_tbl = get_html_translation_table (HTML_ENTITIES);
    $trans_tbl = array_flip ($trans_tbl);
    return strtr ($string, $trans_tbl);
    // $c = unhtmlentities($a);
}

なぜこれはuarrとdarrには問題なく機能しますが、plusmnでは機能しないのでしょうか。

4

1 に答える 1

1

&plusmn;ブラウザに配信されたソースにまだ表示されているのにa<?>が表示されている場合は、ブラウザの障害である可能性があります。文字エンコードが何に設定されているかを確認してください。

編集:マリオがコメントしたように、それは単にその文字があなたが使用しているフォントに存在しないということかもしれません。

于 2012-11-15T15:54:27.640 に答える