У меня есть строка, которая является предложением, написанным на китайском языке.
Это содержит китайские символы и другие наполнители, такие как пробелы, запятые, восклицательные знаки и т. Д., Все кодированные в UTF8.
Используя регулярное выражение с латинской строкой, я мог бы использовать preg_replace
и [a-zA-Z]
чтобы очистить его и удалить наполнитель.
Как я могу сохранить только китайские символы «алфавита» в китайской строке, удаляя все наполнители?
Согласно этому документу , здесь представлены диапазоны юникодов китайских символов:
Таблица 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
см. здесь для всех unicode scripts