Проблема в том, что механизм регулярных выражений PCRE не понимает синтаксис \uXXXX
для обозначения символов через их кодовые точки Юникода. Вместо этого механизм PCRE использует синтаксис \x{XXXX}
в сочетании с модификатором u
:
preg_match_all('/[\w\x{FF10}-\x{FF19}\x{FF21}-\x{FF3A}\x{FF41}-\x{FF5A}]/u',$str,$match);
print_r($match);
Смотрите мой ответ здесь для получения дополнительной информации.
EDIT:
$str = "统计类型目前分为0日Q统计,月统q计及287年7统1计三7种,如需63自定义时间段,点1击此hell处进入自o定w义统or计d!页面。其他统计:客服工作量统计 | 本周服务统计EXCEL";
preg_match_all('/[\w\x{FF10}-\x{FF19}\x{FF21}-\x{FF3A}\x{FF41}-\x{FF5A}]/u',$str,$match);
// ^
// |
print_r($match);
/* Array
(
[0] => Array
(
[0] => 0
[1] => Q
[2] => q
[3] => 2
[4] => 8
[5] => 7
[6] => 7
[7] => 1
[8] => 7
[9] => 6
[10] => 3
[11] => 1
[12] => h
[13] => e
[14] => l
[15] => l
[16] => o
[17] => w
[18] => o
[19] => r
[20] => d
[21] => E
[22] => X
[23] => C
[24] => E
[25] => L
)
) */
Вы уверены, что использовали модификатор u
(см. Стрелку выше)? Если это так, вам нужно проверить, поддерживает ли ваш PHP модификатор th u
(PHP> 4.1.0 в Unix и> 4.2.3 в Windows).