gpt4 book ai didi

php - 如何在 PHP 中查找 unicode 字符类

转载 作者:行者123 更新时间:2023-12-02 01:44:36 26 4
gpt4 key购买 nike

我很难找到一种方法来获取字符的 unicode 类。

Unicode 类列表:https://www.php.net/manual/en/regexp.reference.unicode.php

所需的 python 函数:https://docs.python.org/3/library/unicodedata.html#unicodedata.category

我只想要与此 python 函数等效的 PHP。

例如,如果我这样调用 x 函数:x('-') 它会返回 Pd,因为 Pd 是连字符所属的类。

谢谢。

最佳答案

一种可能的方法是使用 IntlChar::charType .不幸的是,此方法仅返回一个 int,但此 int 是 IntlChar class 中定义的常量。 . 30 个类别的所有常量都在 0 到 29 的范围内(没有间隙)。结论,您所要做的就是构建一个遵循相同顺序的索引数组:

$shortCats = [
'Cn', 'Lu', 'Ll', 'Lt', 'Lm', 'Lo',
'Mn', 'Me', 'Mc', 'Nd', 'Nl', 'No',
'Zs', 'Zl', 'Zp', 'Cc', 'Cf', 'Co',
'Cs', 'Pd', 'Ps', 'Pe', 'Pc', 'Po',
'Sm', 'Sc', 'Sk', 'So', 'Pi', 'Pf'
];

echo $shortCats[IntlChar::charType('-')]; //Pd

注意:如果怕以后类中定义的数值发生变化,想更严谨一些,也可以这样写数组:

$shortCats = [
IntlChar::CHAR_CATEGORY_UNASSIGNED => 'Cn',
IntlChar::CHAR_CATEGORY_UPPERCASE_LETTER => 'Lu',
IntlChar::CHAR_CATEGORY_LOWERCASE_LETTER => 'Ll',
IntlChar::CHAR_CATEGORY_TITLECASE_LETTER => 'Lt',
// etc.
];

关于php - 如何在 PHP 中查找 unicode 字符类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71093776/

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