我有一个用中文写的句子。
这包含中文字符和其他填充内容,如空格,逗号,感叹号等,均以UTF8编码。
使用带有latin1字符串的正则表达式,我可以使用preg_replace
和[a-zA-Z]
来清除它并删除填充符。
如何删除所有填充项目时,如何只保留中文字符串中的中文“字母”字符?
答案 0 :(得分:5)
根据this document,这里是unicode中文字符范围:
表12-2。含汉字表意文字的块
Block Range Comment
CJK Unified Ideographs 4E00–9FFF Common
CJK Unified Ideographs Extension A 3400–4DBF Rare
CJK Unified Ideographs Extension B 20000–2A6DF Rare, historic
CJK Unified Ideographs Extension C 2A700–2B73F Rare, historic
CJK Unified Ideographs Extension D 2B740–2B81F Uncommon, some in current use
CJK Compatibility Ideographs F900–FAFF Duplicates, unifiable variants, corporate
characters
CJK Compatibility Ideographs Supplement 2F800–2FA1F Unifiable variants
您可以像这样使用它:
preg_replace('/[^\u4E00-\u9FFF]+/', '', $string);
或
preg_replace('/\P{Han}+/', '', $string);
其中\P
是\p
请参阅here查看所有unicode scripts