복붙노트

PHP에서 ereg 표현식을 preg로 변환하려면 어떻게해야합니까?

PHP

PHP에서 ereg 표현식을 preg로 변환하려면 어떻게해야합니까?

POSIX 정규 표현식 (ereg)은 PHP 5.3.0부터 사용되지 않으므로 이전 표현식을 PCRE (Perl Compatible Regular Expressions) (preg)로 변환하는 쉬운 방법을 알고 싶습니다.

예를 들어, 나는이 정규 표현식을 가진다.

eregi('^hello world');

표현식을 preg_match 호환 표현식으로 변환하려면 어떻게해야합니까?

해결법

  1. ==============================

    1.

    구문에서 가장 큰 변화는 구분 기호를 추가 한 것입니다.

    ereg('^hello', $str);
    preg_match('/^hello/', $str);
    

    구분 기호는 영숫자가 아니거나 백 슬래시 또는 공백 문자가 아닌 거의 모든 항목이 될 수 있습니다. 가장 많이 사용되는 것은 ~, / 및 #입니다.

    다음과 같이 대괄호를 사용할 수도 있습니다.

    preg_match('[^hello]', $str);
    preg_match('(^hello)', $str);
    preg_match('{^hello}', $str);
    // etc
    

    구분 기호가 정규식에서 발견되면 이스케이프 처리해야합니다.

    ereg('^/hello', $str);
    preg_match('/^\/hello/', $str);
    

    preg_quote를 사용하여 문자열의 모든 구분 기호와 예약 문자를 쉽게 이스케이프 처리 할 수 ​​있습니다.

    $expr = preg_quote('/hello', '/');
    preg_match('/^'.$expr.'/', $str);
    

    또한 PCRE는 여러 가지 수정자를 지원합니다. 가장 많이 사용되는 방법 중 하나는 eregi 대신 대소 문자를 구별하지 않는 수정 자 i입니다.

    eregi('^hello', 'HELLO');
    preg_match('/^hello/i', 'HELLO');
    

    매뉴얼의 PHP에서 PCRE 구문에 대한 완전한 참조와 POSIX 정규 표현식과 PCRE의 차이점 목록을 사용하여 표현식 변환에 도움을 얻을 수 있습니다.

    그러나 간단한 예제에서는 정규식을 사용하지 않습니다.

    stripos($str, 'hello world') === 0
    
  2. ==============================

    2.

    Ereg를 preg (PHP 5.3.0 기준)으로 대체하는 것이 옳았습니다.

    Perl 호환 정규식 구문을 사용하는 preg_match는 종종 ereg보다 빠른 대안입니다.

    preg하기 위해 ereg 패턴을 포팅하기위한 4 가지 주요 사항을 알아야합니다.

  3. ==============================

    3.

    ereg ()와 preg_replace () 사이에는 문법보다 더 많은 차이점이 있습니다 :

    preg_match ()로 자신의 ereg ()를 변환 할만큼 용감하지 않으면 PHP 7에서 계속 사용할 수있는 mb_ereg ()를 사용할 수 있습니다.

  4. ==============================

    4.

    PHP 버전 5.3부터, ereg는 더 이상 사용되지 않습니다.

    ereg에서 preg_match로 이동하는 것은 우리 패턴의 작은 변화 일뿐입니다.

    먼저 코드에 구분 기호를 추가해야합니다 (예 :

    ereg('A-Z0-9a-z', 'string');
    

    preg_match('/A-Z0-9a-z/', 'string');
    

    eregi 대소 문자를 구분하지 않으려면 마지막 구분 기호 뒤에 i를 넣습니다 (예 :

    eregi('pattern', 'string');
    

    preg_match ('/pattern/i', 'string');
    
  5. from https://stackoverflow.com/questions/6270004/how-can-i-convert-ereg-expressions-to-preg-in-php by cc-by-sa and MIT lisence