u modifier를 이용하여 정규표현식에 유니코드를 사용할 수 있음.
유니코드에 정의된 언어셋별로도 활용할 수 있어 유용할 듯.

 

$s = 'a가韓あアb나灭いイ';
 
$scripts = array(
    'Hangul',
    'Hiragana',
    'Katakana',
    'Han'
);
 
 
foreach ($scripts as $script) {
    $pattern = "/\p{".$script."}/u";
    preg_match_all($pattern, $s, $m);
 
    printf("[%s]\n", $script);
    foreach ($m[0] as $k=>$ch) {
        printf("[%d] %s\n", $k, $ch);
    }
 
    echo "\n";
}
 
// 결과
/*
[Hangul]
[0] 가
[1] 나
 
[Hiragana]
[0] あ
[1] い
 
[Katakana]
[0] ア
[1] イ
 
[Han]
[0] 韓
[1] 灭
*/

 

언어셋 외에도 활용 케이스가 어마어마함.



[참고]
https://www.php.net/manual/en/regexp.reference.unicode.php
https://www.regular-expressions.info/unicode.html

 

 

 

 

Posted by bloodguy

댓글을 달아 주세요