PHP에서 한글 정규식사용하기

PHP에서 한글 정규식을 사용해봅시다.

원래는 2바이트 특수문자 차단을 위해서 시작하였으나 -_-; 특수문자의 유니코드 범위가 들숙날쑥이라 범위를
지정할 수가 없었습니다. ㄷㄷㄷ

$pattern = '/[#&*@§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕]/u';

삽질의 흔적….
이렇게하면 한도 끝도 없이 모든걸 다 정규식에 넣어줘야 하는 상황이 발생하니 정규식은 의미가 없게 되겠죠…

…. 삽질 중략 …..

특수문자를 검출 할 수 없다면, 한글,영문, 키보드의 기본문자 등을 검출하여 남는 녀석이 2바이트 특수문자가 되겠구나 라는 아이디어를 이베이프(evape.kr)님께서 아이디어를 주셨습니다. ㅎㅎ (역시 개발자이심)

그리고 열심히 구글을 검색하던 도중 정규식에서도 \x{코드}를 통해서 유니코드를 사용할 수 있다는 것을 알았습니다. ㅋㅋ

무조건 만드는게 아니라 이해를 하고 만들어야해서 다음 페이지에서 많은 도움을 받았습니다. -ㅅ-) 감사..
http://d2.naver.com/helloworld/76650
(한글 코드 범위에 대해서 많은 참조가되었습니다. ^^)

요즘은 정리가 잘되어있어서 찾아도 잘 나오니….

아무튼.. 다음과 같은 결론에 도달하였습니다.

<?
$pattern = '/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}a-zA-Z0-9~`!@#$%^&*()+\-.:;,_<>?\[\]\{\}\/"\' ]+/u';
$tmp_subject = preg_replace($pattern, "", $subject,-1);
echo $tmp_subject;
?>

$tmp_subject에 걸러지는 녀석이 있으면 2바이트 특문이 되게 됩니다.

테스트 URL : http://jusun trouver du viagra en ligne.org/example/preg/preg2.php

테스트는 해보지 않았지만 아마 JavaScript에서도 별탈없이 잘 돌아갈것같네요..

오늘도 여기까지…. -ㅅ-)

Leave a Reply

Your email address will not be published. Required fields are marked *