정규표현식 한글 특수문자 숫자 영문 분리(추출) > PHP
PHP

정규표현식 한글 특수문자 숫자 영문 분리(추출)

조회 4,399회 댓글 0건

한글 특수문자 분리해 주는 정규표현식인데 다른분이 만들어 놓은것 잘 되는지 확인해 보았습니다.아래서 주석 처리된것은 깨져서 나와서 시간이 될때 추가 확인을 해야 되서 주석 처리 하였습니다.


utf-8 이기 때문에 euc-kr 사용하시는곳에서는 변환하는것을 추가 해서 사용 해야 됩니다. json 이든 utf-8 아니면 안되는것들이 몇가지 있습니다.


아래에서 가져왔습니다. 가끔 필요한 경우가 있는데 감사합니다.

[ php ] PREG 한글 특수문자 체크 & 추출  


아래는 실행한 코드 입니다.

  $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 / ① / “사용자”/ ※
)
  */
  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 191건 1 페이지
  • profile_image AWS SES API를 활용하면서 PEAR 라이브러리 활용할 필요가 있을 때 사용하면 되지만 일반적으로는 사용할 필요는 없습니다.하지만 필요한 분이 있을 수 있어 예전 소스중에 있어 올립니다. 1) PEAR 설치 사용하는 PHP 버전의 경로를 지정해서 설치 해야 한다. wget https://pear.php.net/go-pear.phar /usr/local/php82/bin/php go-pear.phar /usr/local/php82/bin/p…
  • profile_image AWS에서 메일을 발송하는 방법에는 SMTP 설정을 통한 방법이 있고 다른 하나는 API를 이용한 방법이 있는데여기에선 API를 이용한 방법에 대한 예 입니다.보통 간단하게 조금 보낼때는 관계 없는데 많이 보내게 되면 AWS 비용이 비싸고 반송 메일에 따라 좋지 않으면 패널티도 받기 때문에 AWS 이용은 많이 안하는 편입니다.대량메일 발송서비스만 전문으로 해주는곳을 이용하거나 직접 구축하여 발송을 하게 됩니다.한달 몇 천건 정도면 이것 이용해도…
  • profile_image 간혹 PHP만 설치해서 사용하고 최대한 라이브러리 설치 하지 않게 사용하면서 간단하게 암호화할 필요가 있을 경우 사용 합니다. 가능하면 OpenSSL 라이브러리 사용하는 암호화 방식을 추천 합니다.  그리고 어떤 방식이든 대칭형 암호화에서 키는 가능하면 길게 만들고 여기선 md5 사용 했지만 sha512 같은것 사용하면 더 좋고 시간, 또는 일마다 같은 문자도 암호화 결과가 다르게 만드는것이 좋습니다. 그 부분은 개인의 상황에 맞게 별도의 메소…
  • profile_image 다른 언어에선 셀레리움을 많이 사용하는듯 한데 PHP에서 페이스북에서 만든 웹드라이브를 사용합니다.설치는 어렵지 않으며 여기선 윈도우용 PHP가 이미 설치 되어 있다고 가정하고 웹드라이브 설치 하는것 부터 진행 합니다.▷ 윈도우용 컴포저 다운로드https://getcomposer.org/Composer-Setup.exe▷ 필요한 라이브러리 설치composer require php-webdriver/webdrivercomposer require …
  • profile_image 객체를 생성하는 각 방법은 사용하는 상황과 개발자의 선호도에 따라 다를 수 있는데 생성 하는 방법에는 아래와 같은 것들이 있습니다.  $obj = new stdClass();   // 기본 클래스  $obj = (object) null;    // (object) 변환  $obj = (object)[];       // 빈 배열을 object로 변환  $obj = new class {};     // 익명클래스 - php7 이상 new stdC…
  • profile_image SQL 인젝션 방어를 위해서 sprintf 함수를 많이 사용 하곤 했는데요. 이건 스트링에 그대로 대입을 시켜 주는 방식으로 쿼리문 문자열이 변경되는 방식 입니다.이 방식 말고 mysqli 함수에서 제공하는 기능이 이건 좀 다릅니다.파라미터 값이 문자열로 들어가는 것이 아니라 조건 그대로 들어가도록 되어 있습니다. 그렇기 때문에 OR 1=1 이런것이 먹히질 않습니다.  # CREATE TABLE test.test1 ( hostname char(…
  • profile_image 배열의 키는 날짜로 되어 있습니다.이 날짜키를 기준으로 위쪽, 아래쪽의 데이터를 리턴 받는 것입니다.원리는 기준점을 정하고 그 다음 지정한 갯수 가져오고배열을 역으로 정렬합니다.(기존 날짜순의 역순)그리고 또 동일한 방법으로 지정한 날짜가 나오면 그 다음 5개를 리턴합니다.아래에서는 지정한 날짜는 리턴 대상이 아닙니다.2023-01-02 11:11:012023-01-02 11:11:022023-01-02 11:11:03  <-- 지정 날짜…