gpt4 book ai didi

php - 清理/替换所有日文、中文、韩文、俄文等字符

转载 作者:行者123 更新时间:2023-12-02 22:33:22 25 4
gpt4 key购买 nike

我有清理 URL 和文件名的功能,它可以很好地处理像 éáßöäü 这样的字符,因为它用 eassoau 等替换它们。使用 str_replace($a, $b, $值)。但是我怎样才能替换中文、日文……语言中的所有字符?如果因为不容易确定而无法替换,我该如何删除所有这些字符?当然,我可以先像上面那样对其进行清理,然后删除所有“非拉丁”字符。但也许还有另一个好的解决方案?

编辑/添加

如评论中所问:我的问题的目的是什么?我们有一个客户,最初有英语、德语和俄语的内容。后来出现了一些中文页面。 URL 出现了两个问题:

  • 第一个杀毒软件杀死了所有“非 ascii 字符”并可能返回“空白”(无效)清洁 URL
  • 客户体验到,在某些浏览器中,带有中文字符的干净 URL 无法正常工作

第一点让我想到了替换这些角色的镜头,这当然是不可能的,正如问题中所述,评论也证实了这一点。也许现在有人回答说在所有现代浏览器(从 IE8 开始)中这不再是问题。我也很高兴听到这个消息。

最佳答案

例如,对于日语,通常有一个 romanji 表示一切,它只使用 ascii 字符,并且仍然给出原始字符的可逆和可理解的表示。但是,将某些内容翻译成罗马字需要您知道正确的发音,而这通常取决于使用字符的含义或上下文。这使得即使不是不可能,也很难简单地正确转换所有内容(或者至少对于简单的 sanitizer 来说不是有效的)。

这同样适用于中文,更糟糕的是。另一方面,韩语有一个非常简单的字符集,应该很容易翻译成罗马表示。另一个常见问题是没有单一罗马化方法;这些语言通常有不同的语言供不同的人使用(例如日语有两种常见的罗马化)。

所以这实际上取决于您使用的实际语言;虽然您可能能够使其适用于一些语言,但另一个问题是检测您实际使用的是哪种语言(例如,日语和中文共享很多字符,但含义、发音等罗马化通常是不兼容的)。尤其是对于文件名的简单santization,我认为不值得投入如此多的工作和处理时间。

也许您应该朝不同的方向努力:让您的文件名简单地用作 unicode 文件名。实际上,文件系统中真正无效的字符数量很少 ( *|\/:"<>? ),因此简单地过滤掉这些字符并以其他方式支持 unicode 文件名会更容易。

关于php - 清理/替换所有日文、中文、韩文、俄文等字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11831867/

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