2

漢字を含む可能性のある文字列に一致する正規表現を作成しようとしています。例:

hahdj5454_fd.fgg"
example.com/list.php?keyword=关键字
example.com/list.php?keyword=php

私はこの表現を使用しています:

$matchStr =  '/^[a-z 0-9~%.:_\-\/[^x7f-xff]+$/i';
$str      =  "http://example.com/list.php?keyword=关键字";

if ( ! preg_match($matchStr, $str)){
    exit('WRONG');
}else{
    echo "RIGHT"; 
}

dasdsdsfdsやなどのプレーンな英語の文字列http://example.com/list.phpには一致しますが、漢字を含む文字列には一致しません。どうすればこれを解決できますか?

4

2 に答える 2

2

この正規表現が一致する文字のセットをASCIIからすべてのUnicode文字に拡張する場合は、次を使用できます。

$matchStr =  '#^[\pL 0-9~%.:_/-]+$#u';

[^x7f-xff意味をなさない部分を削除しました(正規表現では、開き角かっこ、カレット、およびその文字クラスのa-zとの部分ですでにカバーされている一部のASCII文字と一致していました)。0-9

于 2013-03-13T10:49:44.353 に答える
0

これは機能します:

$str = "http://mysite/list.php?keyword=关键字";

if (preg_match('/[\p{Han}]/simu', $str)) {
    echo "Contains Chinese Characters"; 
}else{
    exit('WRONG'); // Doesn't contains Chinese Characters
}
于 2013-12-27T10:25:46.320 に答える