gpt4 book ai didi

php - ICU:音译然后删除所有非字母数字字符

转载 作者:可可西里 更新时间:2023-11-01 13:17:38 25 4
gpt4 key购买 nike

是否可以在不退回到正则表达式的情况下使用 ICU 完成?

目前我规范化文件名是这样的:

protected function normalizeFilename($filename)
{
$transliterator = Transliterator::createFromRules(
'Any-Latin; Latin-ASCII; [:Punctuation:] Remove;'
);
$filename = $transliterator->transliterate($filename);
$filename = preg_replace('/[^A-Za-z0-9_]/', '', $filename);
return $filename;

}

我可以在这里摆脱正则表达式并通过 ICU 调用完成所有操作吗?

最佳答案

为工作使用正确的工具

我认为您现在所做的没有任何问题。

ICU 音译首先是面向语言的。它试图保留意义。

另一方面,正则表达式可以详细操作字符,让您确信文件名仅限于所选字符。

在这种情况下,组合是完美的。

当然,我已经为您的问题寻找解决方案。但老实说,我找不到适用于所有可能输入的东西。

例如,不是所有的字符,我们认为是标点符号,都被[:Punctuation:] Remove; 删除。试试俄语名称:Корнильев, Кирилл。应用您的 id 后,它将变为:Kornilʹev Kirill。显然这不是标点符号,但您不希望它出现在您的文件名中。

所以我建议使用正确的工具来完成工作:

  1. 使用 ICU 获得最佳的 ASCII 等价物。仅使用 Latin-ASCII; 作为 id 即可。漂亮而简单。
  2. 然后像您一样使用正则表达式,以确保只剩下您需要的字符。

这真的没有错。

PS:我个人认为编写 ICU 用户指南的人不应因工作出色而受到称赞。真是一团糟。

关于php - ICU:音译然后删除所有非字母数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25908610/

25 4 0
文章推荐: c - Zephir 是否可以包含外部库?
文章推荐: html - 让标签转到右边?
文章推荐: html - css 中的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com