重写“漂亮的网址”时如何处理变音符号(重音符号)

我重写了URL,以包括用户生成的travelblogs的标题。

我这样做是出于URL的可读性和SEO的目的。

 http://www.example.com/gallery/280-Gorges_du_Todra/

第一个整数是id,其余的对我们来说是人类(但与请求资源无关)。

现在,人们可以编写包含任何UTF-8字符的标题,但URL中不允许使用大多数字符。我的听众通常是说英语的,但自从旅行以来,他们喜欢添加诸如

 本·哈杜(AïtBen Haddou)

在Linux上使用PHP进行翻译以显示在URL中的正确方法是什么。

到目前为止,我已经看到了几种解决方案:

  1. 只需删除所有不允许的字符,替换空格,这将产生奇怪的结果:

    'Aït Ben Haddou' → /gallery/280-At_Ben_Haddou/

    并不是很有帮助。

  2. 只需去除所有不允许的字符,替换空格,保留字符代码,最可能的原因是使用了’regex-hammer’, 这会产生奇怪的结果: 'tést tést' → /questions/0000/t233st-t233st

  3. 翻译成“最近等效”,

    'Aït Ben Haddou' → /gallery/280-Ait_Ben_Haddou/

    但这对于德国人是错误的 例如,“ü”应音译为“ ue”。

对我来说,作为荷兰人,第三名看起来“最好”。

但是,我非常确定(1)许多人会有不同的看法,并且(2)在德国示例中这完全是错误的。

第三个选项的另一个问题是:如何找到所有可以转换为7位等效字符的字符?

所以问题是:

  1. 您认为最理想的结果是什么。(在技术限制内)

  2. 如何从技术上解决它。(达到期望的结果)。

回答:

最终,对于这个问题,您将不得不放弃“正确”的想法。无论您如何操作,翻译字符串都会破坏兼容性和可读性的准确性。这三个选项均兼容,但是#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

回到顶部