% uniprops ff5e ffeb
U+FF5E ‹~› \N{ FULLWIDTH TILDE }:
\pS \p{Sm}
All Any Assigned InHalfwidthAndFullwidthForms Changes_When_NFKC_Casefolded
CWKCF Common Zyyy Sm S Gr_Base Grapheme_Base Graph GrBase Math
Math_Symbol Print Symbol
U+FFEB ‹→› \N{ HALFWIDTH RIGHTWARDS ARROW }:
\pS \p{Sm}
All Any Assigned InHalfwidthAndFullwidthForms Changes_When_NFKC_Casefolded
CWKCF Common Zyyy Sm S Gr_Base Grapheme_Base Graph GrBase Math
Math_Symbol Print Symbol
7条答案
按热度按时间56lgkhnf1#
kxe2p93d2#
PCRE unicode properties属性可用于实现此目的
下面是我使用的代码,似乎可以做到你想要的:
结果
说明:
\p{xx}具有xx属性的字符\P{xx}没有xx属性的字符
如果xx只有一个字符,则可以删除{},例如\p{Z}与\pZ相同
Z代表所有分隔符,C代表所有“其他”字符(例如控制字符)
ryoqjall3#
现有的解决方案只提到
\pZ
字符。然而,有六个Unicode空白字符不在该属性的范围内:这六个字符都是
\pC
类型,特别是\p{Cc}
类型。然而,还有59个非空格字符也是\p{Cc}
类型:我自己测试某个字符是否是可打印字符的简单版本是
[\pZ\pC]
;例如,这就是unichars
所使用的。一个更仔细的测试会考虑是否应该占用0,1或2个打印位置。这需要考虑它是否是一个组合Mark,即属性
\pM
,以及它是否具有半角或全角属性。例如:对于这些,您需要使用非二进制东亚宽度属性。这些适用于:
它们有像
\p{Ea=F}
和\p{Ea=H}
这样的缩写。有很多这样的缩写:当然,你不能给这些东西起名字,但要给它们起属性:
为了向你展示这些东西到底有多少个属性,下面是三个不同字符的完整属性转储,运行在Unicode 5.2上:
很漂亮吧?
如果你已经读到这里,并且想知道在哪里可以得到上面说明的三个Unicode实用程序,
uniprops
,unichars
和uninames
,请给我发邮件,因为当前的链接现在不工作。quhf5bfb4#
http://php.net/manual/en/function.mb-ereg.php看不到mb_trim,但有一组MB安全的正则表达式函数。
G
zu0ti5jz5#
此页面可能有助于:
http://nadeausoftware.com/articles/2007/9/php_tip_how_strip_punctuation_characters_web_page
tmb3ates6#
然而,这里是我唯一的解决方案,因为有时会有UTF8空格:
3pmvbmvn7#
上面的答案没有一个实际上不能去除utf-8字符串中的白色。
这个解决方案发现here工作得很好,并且是最短的: