重写“漂亮的网址”时如何处理变音符号(重音符号)
我重写了URL,以包括用户生成的travelblogs的标题。
我这样做是出于URL的可读性和SEO的目的。
http://www.example.com/gallery/280-Gorges_du_Todra/
第一个整数是id,其余的对我们来说是人类(但与请求资源无关)。
现在,人们可以编写包含任何UTF-8字符的标题,但URL中不允许使用大多数字符。我的听众通常是说英语的,但自从旅行以来,他们喜欢添加诸如
本·哈杜(AïtBen Haddou)
在Linux上使用PHP进行翻译以显示在URL中的正确方法是什么。
到目前为止,我已经看到了几种解决方案:
只需删除所有不允许的字符,替换空格,这将产生奇怪的结果:
'Aït Ben Haddou' → /gallery/280-At_Ben_Haddou/
并不是很有帮助。
只需去除所有不允许的字符,替换空格,保留字符代码,最可能的原因是使用了’regex-hammer’, 这会产生奇怪的结果:
'tést tést' → /questions/0000/t233st-t233st
翻译成“最近等效”,
'Aït Ben Haddou' → /gallery/280-Ait_Ben_Haddou/
但这对于德国人是错误的 例如,“ü”应音译为“ ue”。
对我来说,作为荷兰人,第三名看起来“最好”。
但是,我非常确定(1)许多人会有不同的看法,并且(2)在德国示例中这完全是错误的。
第三个选项的另一个问题是:如何找到所有可以转换为7位等效字符的字符?
所以问题是:
您认为最理想的结果是什么。(在技术限制内)
如何从技术上解决它。(达到期望的结果)。
回答:
最终,对于这个问题,您将不得不放弃“正确”的想法。无论您如何操作,翻译字符串都会破坏兼容性和可读性的准确性。这三个选项均兼容,但是#1和#2在可读性方面受到影响。因此,只需运行它,然后选择最适合的方法-
选项3。
是的,德语翻译是错误的,但是除非您开始要求用户指定其标题所使用的语言(并将其限制为仅一种语言),否则您将不费吹灰之力地解决该问题。(例如,通过词典针对每种已知语言运行标题中的每个单词,并根据其语言规则翻译该单词的变音符号是
可行的 ,但这是多余的。)
另外,如果德语比其他语言更受关注,请在存在以下语言的情况下 始终 使用德语版本进行翻译:ä
→ ae
,ë
→ e
,ï
→ i
,ö
→
oe
,ü
→ ue
。
哦,关于实际方法,我将通过转换特殊情况(如果有的话)str_replace
,然后将其iconv
用于其余部分:
$text = str_replace(array("ä", "ö", "ü", "ß"), array("ae", "oe", "ue", "ss"), $text);$text = iconv('UTF-8', 'US-ASCII//TRANSLIT', $text);
以上是 重写“漂亮的网址”时如何处理变音符号(重音符号) 的全部内容, 来源链接: utcz.com/qa/402678.html