정규표현식 한글 특수문자 숫자 영문 분리(추출)
한글 특수문자 분리해 주는 정규표현식인데 다른분이 만들어 놓은것 잘 되는지 확인해 보았습니다.아래서 주석 처리된것은 깨져서 나와서 시간이 될때 추가 확인을 해야 되서 주석 처리 하였습니다.
utf-8 이기 때문에 euc-kr 사용하시는곳에서는 변환하는것을 추가 해서 사용 해야 됩니다. json 이든 utf-8 아니면 안되는것들이 몇가지 있습니다.
아래에서 가져왔습니다. 가끔 필요한 경우가 있는데 감사합니다.
아래는 실행한 코드 입니다.
$convMsg = "2002년 영문:eng list / 숫자:2002-01 / ① / “사용자”/ ※ ";
$resultArr = array();
echo "\n\n\n";
// 1: 한글
$pattern = '/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[1] = $match[0];
// 2: 영문
$pattern = '/[a-zA-Z]/';
preg_match_all($pattern,$convMsg,$match);
$resultArr[2] = $match[0];
// 4: 숫자
$pattern = '/[0-9]/';
preg_match_all($pattern,$convMsg,$match);
$resultArr[4] = $match[0];
// 8: 특수기호
$pattern = '/[^\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}0-9a-zA-Z]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[8] = $match[0];
// 3: 한글 + 영문
$pattern = '/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}a-zA-Z]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[3] = $match[0];
// 5: 한글 + 숫자
$pattern = '/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}0-9]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[5] = $match[0];
// // 9: 한글 + 특수기호
// $pattern = '/[^0-9a-zA-Z]/';
// preg_match_all($pattern,$convMsg,$match);
// $resultArr[9] = $match[0];
// 6: 영문 + 숫자
$pattern = '/[0-9a-zA-Z]/';
preg_match_all($pattern,$convMsg,$match);
$resultArr[6] = $match[0];
// 10: 영문 + 특수기호
$pattern = '/[^\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}0-9]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[10] = $match[0];
// 12: 숫자 + 특수기호
$pattern = '/[^\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}a-zA-Z]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[12] = $match[0];
// 7: 한글 + 영문 + 숫자
$pattern = '/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}0-9a-zA-Z]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[7] = $match[0];
// // 11: 한글 + 영어 + 특수기호
// $pattern = '/[^0-9]/';
// preg_match_all($pattern,$convMsg,$match);
// $resultArr[11] = $match[0];
// 14: 영문 + 숫자 + 특수기호
$pattern = '/[^\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+/u';
preg_match_all($pattern,$convMsg,$match);
$resultArr[14] = $match[0];
// // 13: 한글 + 숫자 + 특수기호
// $pattern = '/[^a-zA-Z]/';
// preg_match_all($pattern,$convMsg,$match);
// $resultArr[13] = $match[0];
// 15: 한글 + 영문 + 숫자 + 특수기호
$resultArr[15] = $convMsg;
print_r($resultArr);
echo "\n\n\n";
/*
Array
(
[1] => Array
(
[0] => 년
[1] => 영문
[2] => 숫자
[3] => 사용자
)
[2] => Array
(
[0] => e
[1] => n
[2] => g
[3] => l
[4] => i
[5] => s
[6] => t
)
[4] => Array
(
[0] => 2
[1] => 0
[2] => 0
[3] => 2
[4] => 2
[5] => 0
[6] => 0
[7] => 2
[8] => 0
[9] => 1
)
[8] => Array
(
[0] =>
[1] => :
[2] =>
[3] => /
[4] => :
[5] => -
[6] => / ① / “
[7] => ”/ ※
)
[3] => Array
(
[0] => 년
[1] => 영문
[2] => eng
[3] => list
[4] => 숫자
[5] => 사용자
)
[5] => Array
(
[0] => 2002년
[1] => 영문
[2] => 숫자
[3] => 2002
[4] => 01
[5] => 사용자
)
[6] => Array
(
[0] => 2
[1] => 0
[2] => 0
[3] => 2
[4] => e
[5] => n
[6] => g
[7] => l
[8] => i
[9] => s
[10] => t
[11] => 2
[12] => 0
[13] => 0
[14] => 2
[15] => 0
[16] => 1
)
[10] => Array
(
[0] =>
[1] => :eng list /
[2] => :
[3] => -
[4] => / ① / “
[5] => ”/ ※
)
[12] => Array
(
[0] => 2002
[1] =>
[2] => :
[3] =>
[4] => /
[5] => :2002-01 / ① / “
[6] => ”/ ※
)
[7] => Array
(
[0] => 2002년
[1] => 영문
[2] => eng
[3] => list
[4] => 숫자
[5] => 2002
[6] => 01
[7] => 사용자
)
[14] => Array
(
[0] => 2002
[1] =>
[2] => :eng list /
[3] => :2002-01 / ① / “
[4] => ”/ ※
)
[15] => 2002년 영문:eng list / 숫자:2002-01 / ① / “사용자”/ ※
)
*/