作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难找到一种方法来获取字符的 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/
我是一名优秀的程序员,十分优秀!