我有一个存储地理数据的数据库,如国家,城市。 我想使用modrewrite与链接,如: mysite.com/europe/austria/vienna
现在的问题是:在德国,一些国家包含像奥地利=österreich这样的变音符号 (我不能在网址中使用变音符号)
所以我的问题: 有没有办法在数据库中创建一个函数,在查询时替换所有特殊字符,如“where validUrl(country)='oesterreich'? 这将取代ö-> oe
到目前为止我唯一的想法是为modrewrite添加一个额外的数据库字段,它将保存“oesterreich”
任何想法?感谢
答案 0 :(得分:1)
它对你没有帮助,因为虽然你可以用德语用ue取代ü,但你不能用其他语言的变音符号来做这些事情。但是,您可以对这些字符进行编码,使其在网址中有效。请参阅urlencode和urldecode。
此外,当您将列的排序规则设置为unicode_ci时,您应该能够选择相似的字符串,因此WHERE YourField = 'enquête'
也应该匹配'enquete'。 'österreich'可能会匹配'osterreich'而不是'oesterreich'。 MySQL可能不够聪明,不知道这个单词是法语还是德语。
您可以选择特定的德语排序规则,但这不符合您的目标。阅读this text on collations可能仍然很有趣,因为它显示了两个德国校对之间的差异。
答案 1 :(得分: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