0

国や都市などの地理データを保存しているデータベースを持っています。mysite.com/europe/austria/viennaのようなリンクでmodrewriteを使用したい

今問題:ドイツ語では、一部の国にはオーストリア=österreichのようなウムラウトが含まれています(URLでウムラウトを使用することはできません)

だから私の質問:「wherevalidUrl(country)='oesterreich'?」のようにクエリを実行すると、データベース内にすべての特殊文字を置き換える関数を作成する方法はありますか?これはö->oeを置き換えます

これまでの私の唯一のアイデアは、「oesterreich」を保持するmodrewrite用のデータベースフィールドを追加することです。

何か案は?ありがとう

4

2 に答える 2

1

ドイツ語ではüをueに置き換えることはできますが、他の言語の発音区別符号ではそのようなことはできないため、役に立ちません。ただし、これらの文字をエンコードして、URLで有効にすることができます。これについては、 urlencodeとurldecodeを参照してください。

また、列の照合をunicode_ciに設定すると、同様の文字列を選択できるはずなので、WHERE YourField = 'enquête'「enquete」にも一致する必要があります。「österreich」はおそらく「osterreich」と一致しますが、「oesterreich」とは一致しません。MySQLはおそらく、この単語がフランス語かドイツ語かを知るのに十分賢くないでしょう。

特にドイツ語の照合を選択することもできますが、これは目標に適合しません。2つのドイツ語の照合の違いを示しているので、照合に関するこのテキストを読むことはまだ興味深いかもしれません。

于 2011-05-16T22:44:56.367 に答える
1

あなたはそのようにMySQLで関数を作成することができます

DELIMITER $$

CREATE FUNCTION UmlautRaus(input varchar) RETURNS varchar
BEGIN
  declare output varchar;

  SET output = REPLACE(input,'ü','ue');
  SET output = REPLACE(output,.....
  ....
  RETURN output;
END $$

DELIMITER ;

ただし、@ GolezTrolが言ったように、他の言語の発音区別符号のため、これは素晴らしいアイデアではありません。

リンク:http ://dev.mysql.com/doc/refman/5.1/en/string-functions.html

于 2011-05-16T23:08:44.557 に答える