tags:

views:

78

answers:

1

Hi all, I got a problem when I tried to find some characters with following code:

$str = "统计类型目前分为0日Q统计,月统q计及287年7统1计三7种,如需63自定义时间段,点1击此hell处进入自o定w义统or计d!页面。其他统计:客服工作量统计 | 本周服务统计EXCEL";
preg_match_all('/[\w\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A]/',$str,$match); //line 5
print_r($match);

And I got error as below:

Warning: preg_match_all() [function.preg-match-all]: Compilation failed: PCRE does not  support \L, \l, \N, \U, or \u at offset 4 in E:\mycake\app\webroot\re.php on line 5

I'm not so familiar with reg expression and have no idea about this error.How can I fix this?Thanks.

+4  A: 

The problem is, that the PCRE regular expression engine does not understand the \uXXXX-syntax to denote characters via their unicode codepoints. Instead the PCRE engine uses a \x{XXXX}-syntax combined with the u-modifier:

preg_match_all('/[\w\x{FF10}-\x{FF19}\x{FF21}-\x{FF3A}\x{FF41}-\x{FF5A}]/u',$str,$match); 
print_r($match);

See my answer here for some more information.

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
        )

) */

You're sure, that you used the u-modifier (see arrow above)? If so, you'd have to check if your PHP supports th u-modifier at all (PHP > 4.1.0 on Unix and > 4.2.3 on Windows).

Stefan Gehrig
thank you,the error has gone.But the result become a null array,perhaps anything wrong?I've added the input variable `$str`.
SpawnCxy
u're right .i make the code run on my lamp instead of wamp and it works fine:)
SpawnCxy