질문을 삭제하지 말아주세요.!
 
1
0
-1

페이지에서 키보드에서 입력되는 값들만 처리해야 할 경우가 생겼습니다..
(예 : A-Z, a-z, 0-9, 한글, 키보드에 있는 특수문자([],{},.) 

컨트롤러에서 다음과 같이 정규식을 사용해서 해결하려고 패턴을 정의하고

$pattern = '/([\xEA-\xED][\x80-\xBF]{2}|[a-zA-Z0-9])+/';


preg_match_all($pattern , trim($text), $match);


을 하고서 $match값을 찍었더니 $match값이 빈 값이 나옵니다.


정규식이 잘못된 건지, 아니면 넘기는 값 처리가 잘못된 건지 헷갈려서


여러분들의 도움을 구합니다.

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      파일 인코딩이 utf-8 이라면 다음과 같이 하면

      한글과, 영어, 숫자만 뽑아올수 있습니다.


      <?php
      
      $pattern = '`[\w0-9a-z]+`iu';
      $string = '@@@안녕 123 abc 하이1a, 1a. ㅎㅎ ????';
      preg_match_all($pattern, $string, $m);
      
      print_r($m);
      
      
      /*
      Array
      (
          [0] => Array
              (
                  [0] => 안녕
                  [1] => 123
                  [2] => abc
                  [3] => 하이1a
                  [4] => 1a
                  [5] => ㅎㅎ
              )
      )
      */
        CommentAdd your comment...
      1.  
        1
        0
        -1

        해당 패턴은 구미권 사람들이 쓰는 것 같습니다. ê, í 등을 매칭하게 해놓았네요.
        그리고 해당 패턴은 그룹을 지어놓고 나서 그 그룹이 1개 이상 나와야 되는 정규식입니다. 아마 매치될 것이 없을 수 있습니다.

        혹시 원하시는 regex가 이런 것은 아닌지 체크해 보세요. https://regex101.com/r/wcsmYR/1/

          CommentAdd your comment...