ユーザーが作成したトラベルブログのタイトルを含むようにURLを書き直します。
私はURLの読みやすさとSEOの目的の両方のためにこれを行います。
http://www.example.com/gallery/280-Gorges_du_Todra/
最初の整数はidで、残りは私たち人間用です(ただし、リソースの要求には関係ありません)。
現在、人々は任意のUTF-8文字を含むタイトルを書くことができますが、ほとんどはURLで許可されていません。私の聴衆は一般的に英語を話しますが、彼らは旅行するので、彼らは次のような名前を含めるのが好きです
アイットベンハドゥ
LinuxでPHPを使用してURLに表示するためにこれを変換する適切な方法は何ですか。
これまでにいくつかの解決策を見てきました:
許可されていない文字をすべて削除し、スペースを置き換えるだけで、奇妙な結果になります。
'Aït Ben Haddou' → /gallery/280-At_Ben_Haddou/
あまり役に立ちません。許可されていないすべての文字を削除し、スペースを置き換え、charcode(stackoverflow.com)を残すだけです。これは、「regex-hammer」が使用されているため
、奇妙な結果が得られる 可能性があります。'tést tést' → /questions/0000/t233st-t233st
「最も近い同等物」に翻訳する
'Aït Ben Haddou' → /gallery/280-Ait_Ben_Haddou/
しかし、これはドイツ語ではうまくいかない。たとえば、「ü」は「ue」に音訳する必要があります。
私にとって、オランダ人として、3番目の結果は「最高に見えます」。
ただし、(1)多くの人が異なる意見を持っていること、および(2)ドイツの例ではまったく間違っていることは間違いありません。
3番目のオプションのもう1つの問題は、7ビット相当に変換できるすべての可能な文字を見つける方法です。
したがって、問題は次のとおりです。
あなたの意見では、これが最も望ましい結果です。(技術制限内)
技術的にそれを解決する方法。(目的の結果に到達する)PHPを使用します。