2

私のプロジェクトでは、いくつかのアップロード フォームがあります。私はスウェーデンに住んでいるので、データを表示するときにエンコーディングが問題にならないように、スウェーデンの特殊文字をそれぞれの HTML コードにエンコードしたいと考えています。コードは次のとおりです。

function format_text($text){
    $chars = ['å','ä','ö','Å','Ä','Ö'];
    $codes = ['å','ä','ö','&Aring','Ä','Ö'];
    foreach($chars as $key => $value){
        $text = str_replace($value,$codes[$key],$text);
    }
    $text = str_replace("\r","\n",$text);
    $text = preg_replace("!\n\n+!", "\n", $text);
    $text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8');
    $lines = explode("\n", $text);
    foreach ($lines as $key => $line){
        $lines[$key] = "<p>{$line}</p>";
    }
    $text = implode("\n", $lines);
    return $text;
}

とにかく、この関数を実行した後、常に から空の文字列を取得しますhtmlspecialchars。これは、置き換えられないスウェーデンの特殊文字が原因であることがわかりました。だから、私の質問はこれです:なぜ特別な文字がそれぞれのHTMLコードに置き換えられないのですか?どうすれば修正できますか? PHP5.4を使用しています。

4

1 に答える 1

2

htmlentities代わりに使用したhtmlspecialchars場合は、必要ありませんstr_replace

$text = htmlentities($text, ENT_QUOTES, 'UTF-8');

それでもうまくいかない場合は、テキストが UTF-8 でエンコードされていることを確認してください。

于 2013-06-30T22:13:50.230 に答える