preg_match, preg_match_all, preg_replace 는 패턴의 [] 안에 유니코드가 있는 경우 /u flag가 없으면 에러

ex)

 

$str = "123가나123";

$pat = "/[가]/"; // 결과 문자열이 깨짐

$pat = "/가/"; //  결과 문자열 정상, []안에 쓰지 않으면 u flag를 안써도 정상

$pat = "/[가]/u"; // u flag를 써야 문자열이 정상

 

$ret = preg_replace($pat, "@", $str, 2, $count);

 

 

//-----------------------------------------------------------------------------

문자열을 패턴에 넣어서 검색시 특수문자 이스케이핑

$search = '/' . preg_quote($search, '/') . '/u';
preg_replace($search, $replace, $subject, 1);

 

반응형
Posted by codens