PHP preg_match()에서 한글 사용 문제.

preg_match()는  PCRE(펄 호환 정규표현식)를 사용합니다.
이것을 이용해서 특정 한글 문자열을 찾으려고 했는데, 못찾더군요...
여기 저기 검색한 끝에 방법을 알았습니다.

해결법: 주어진 문자열의 인코딩이 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];

참고:

댓글

이 블로그의 인기 게시물

프로세스 강제 종료 불가 시.

Visual Studio 디버깅 시 멈춰있는 문제