2011-07-21 8 views
4

ウムラウトを表現ae, Ae, oe, Oe, ue, Uessから元のウムラウトに戻す方法はありますか?重要なことは、スペルが "teuer"のように観察されることです!たとえば、「teuer」という語句は、「teür」にはを変更しないでください。を入力する必要があります。ありがとう!PHPからウムラウトを変換する"ue"から "ü"

+6

いいえ、私はむしろそうは思わない。すべての例外を含む辞書が必要です。 –

+1

あなたは、変換するためのすべての受け入れ可能な単語の辞書を必要とし、部分(a la 'clbuttic')を変換しないようにしてください。 – Andrew

+0

"元のウムラウトに戻って" - 最初にそれらを変換していますか?代わりに情報を保持できるような音がします。 – Dave

答えて

2
iconv("utf-8","ascii//TRANSLIT",$input); 

拡張example

OR

echo strtr(utf8_decode($input), 
      utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 
      'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); 

this質問を参照してください。

0

"ue"、 "oe"などの各順列を変換することをお勧めします。 各順列では、3つの事象が最初に最初のものだけ、次に2番目のもの、次に3番目のもの、次に1番目と2番目のものなどを置き換えることを意味します。

次に、結果が標準のスペルチェック辞書に含まれているかどうかを確認します。これにより、例外のための独自の辞書を作成する必要はありません。

ワードリストは、これが権利を取得するにはかなりトリッキーになるだろうftp://ftp.ox.ac.uk/pub/wordlists/german/words.german.Z

0

に、たとえば見つけることができます。確かにそれを行うための組み込み関数はありません。

このような事例のほとんどは、反対の方向(例:アクセント記号付きの文字列を使用して、それに相当するASCII文字で置き換える)で動作します。私が見たところでは、文字とその等価物のマップを提供し、置換を行っている文字列をスキャンするケースが常にありました。

strtr() functionのPHPマニュアルページには、実行する必要のある種類の良い例がありますが、特定の例外を避けるための要件は、プロセス全体を非常に複雑にするでしょう。