1

他のいくつかの質問を読んでいますが、アクセント付きの文字を含む文字列をプレーン文字に変換する問題にまだ取り組んでいます(つまり、azを意味します)

私はすでに次のようにエンコードされている製品名「Áhkka」を持っています"Áhkká"

これをアクセント付きの文字列にデコードし、「Ahkka」に変換したい

これまでのところ、私は試しました:

function convert($name) {
   $name = html_entity_decode($name,ENT_COMPAT,"UTF-8");
   $name = iconv('UTF-8', 'ASCII//TRANSLIT', $name);
   return $name;
}

iconv からエラーが表示されます:「入力文字列に不正な文字が検出されました」

htmlspecialchars_decode($name); も使用してみました。しかし、それは私に「hkk」を与えます</p>

アクセントをクリアする文字列置換関数も見つけましたが、html 以外の文字列を渡すことができないようです

$name = strtr($name,'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ','aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY');

誰かが解決策を提供してもらえますか? サーバーは PHP 5.2.13 を実行しています。iconv は glibc 2.5 を有効にします (入力/内部/出力エンコーディングは phpinfo で ISO-8859-1 です)

4

1 に答える 1

1

あなたの問題の解決策を見つけようとして、私はこの質問を見つけました:

マルチバイト strtr() -> mb_strtr()

選択した回答で、Alix Axel はまさに必要なものである関数を記述します。

function Unaccent($string)
{
    return preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml|caron);~i', '$1', htmlentities($string, ENT_QUOTES, 'UTF-8'));
}

echo Unaccent(html_entity_decode('&Aacute;hkk&aacute;'));

版画Ahkka

于 2012-10-02T21:59:38.150 に答える