gpt4 book ai didi

php - 重写 'pretty URLs' 时如何处理变音符号(重音)

转载 作者:IT王子 更新时间:2023-10-29 00:03:06 29 4
gpt4 key购买 nike

我重写 URL 以包含用户生成的旅游博客的标题。

我这样做是为了 URL 的可读性和 SEO 目的。

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

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

现在人们可以编写包含任何 UTF-8 字符的标题,但大多数都不允许在 URL 中。我的听众一般说英语,但由于他们旅行,他们喜欢包括像

这样的名字
 Aït Ben Haddou

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

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

  1. 只是去掉所有不允许的字符,替换空格这有奇怪的结果:
    'Aït Ben Haddou' →/gallery/280-At_Ben_Haddou/
    不是很有帮助。

  2. 只是去掉所有不允许的字符,替换空格,留下字符码 (stackoverflow.com) 很可能是因为使用了“正则表达式锤子”
    这会产生奇怪的结果:'tést tést' →/questions/0000/t233st-t233st

  3. 翻译为“最接近的等价物”
    'Aït Ben Haddou' →/gallery/280-Ait_Ben_Haddou/
    但这对德语来说是错误的。例如'ü'应该音译'ue'。

对我来说,作为一个荷兰人,第三个结果“看起来”最好。
但是我很确定(1)很多人会有不同的意见,(2)在德国的例子中这是完全错误的。

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

所以问题是:

  1. 在您看来,最理想的结果是什么。 (在技术范围内)

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

最佳答案

最终,对于这个问题,您将不得不放弃“正确”的想法。翻译字符串,无论你怎么做,都会以兼容性和可读性的名义破坏准确性。所有三个选项都同样兼容,但 #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);

关于php - 重写 'pretty URLs' 时如何处理变音符号(重音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/465990/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com