Удалить все, кроме китайских символов с регулярным выражением?

У меня есть строка, которая является предложением, написанным на китайском языке.

Это содержит китайские символы и другие наполнители, такие как пробелы, запятые, восклицательные знаки и т. Д., Все кодированные в 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