PHP preg_match()에서 한글 사용 문제.
preg_match()는 PCRE(펄 호환 정규표현식)를 사용합니다.
이것을 이용해서 특정 한글 문자열을 찾으려고 했는데, 못찾더군요...
여기 저기 검색한 끝에 방법을 알았습니다.
해결법: 주어진 문자열의 인코딩이 utf-8(유니코드)로 되어 있어야 하고, 정규표현식 끝에 u 옵션을 붙여주면 됩니다.
예제:
참고:
이것을 이용해서 특정 한글 문자열을 찾으려고 했는데, 못찾더군요...
여기 저기 검색한 끝에 방법을 알았습니다.
해결법: 주어진 문자열의 인코딩이 utf-8(유니코드)로 되어 있어야 하고, 정규표현식 끝에 u 옵션을 붙여주면 됩니다.
예제:
// $_GET['data']에는 "제목: 가져 올 값입니다."가 들어있습니다.
// (EUC-KR로 인코딩 되어있다고 가정합니다.)
$data = $_GET['data'];
$data = iconv('EUC-KR', 'UTF-8', $data);
/* "가져 올 값입니다."를 가져오게 하는 패턴.
* 반드시 맨 뒤에 u를 붙여주어야 합니다.
* (펄에서는 호환되지 않습니다.
* 참고: http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php)
*/
$pattern = '/제목: (.*)/u';
preg_match($pattern, $data, $matches);
echo $matches[1];
참고:
- 유니코드 문자열에서 정규표현식 사용 - http://kais.tistory.com/46
- u 패턴변경자(한국어) - http://www.php.net/manual/kr/reference.pcre.pattern.modifiers.php
댓글
댓글 쓰기