>  기사  >  백엔드 개발  >  PHP에서 일반적으로 사용되는 정규식 함수에 대한 자세한 설명

PHP에서 일반적으로 사용되는 정규식 함수에 대한 자세한 설명

小云云
小云云원래의
2018-03-26 10:12:591649검색

이 글은 주로 PHP에서 일반적으로 사용되는 정규식 함수에 대한 자세한 설명을 공유합니다.

문: $pattern=정규식, $subject=대상 데이터

1.preg_match() 및 preg_match_all()

preg_match($pattern,$subject,[array &$matches])
preg_match_all($pattern,$subject,array &$matches)

preg_match는 한 번만 일치하며, preg_match_all은 일치하는 모든 문자열을 일치시켜 일치 배열에 배치합니다. 두 함수 모두 정수 반환 값을 갖습니다.

return 결과가 일치한 횟수

함수 반환 값을 통해 일치하는 키-값 쌍의 개수도 알 수 있습니다.

경험해 볼 수 있는 예를 들어보겠습니다.

<?php  
//preg_match ,preg_match_all  
$pattern = &#39;/[0-9]/&#39;;  
$subject = &#39;weuyr3ui76as83s0ck9&#39;;  
$m1 = $m2 = array();  
preg_match($pattern,$subject,$m1);  
preg_match_all($pattern,$subject,$m2);  
show($m1);  
echo &#39;<hr>&#39;;  
show($m2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>


위 코드는 weuyr3ui76as83s0ck9 문자열에서 숫자를 찾는 코드입니다.

2. preg_replace() 및 preg_filter()

preg_replace($pattern,$replacemenrt,$subject)
preg_filter($pattern,$replacement,$subject)

예를 들어보겠습니다.

<?php  
//preg_filter() preg_replace()  
$pattern = &#39;/[0-9]/&#39;;  
$subject =&#39;weuyr3ui76as83s0ck9&#39;;  
$replacement = &#39;球宝宝&#39;;  
$str1 = preg_replace($pattern,$replacement,$subject);  
$str2 = preg_filter($pattern,$replacement,$subject);  
show($str1);  
echo &#39;<hr>&#39;;  
show($str2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>

preg_replacement()에서는 문자열뿐만 아니라 배열도 사용할 수 있습니다.

다음만 필요합니다: $pattern = array('/[0-3]/','[4-6]','[7-9]');

$replacement = array('ball','宝','宝');

즉, 0~3의 숫자가 일치하면 'ball'이 대신 사용되고, 4~6의 숫자가 일치하면 '宝'이 사용됩니다. 7~9 사이의 숫자는 "宝"을 사용하여 바꾸세요.

예:

<?php  
//preg_filter() preg_replace()  
//$pattern = &#39;/[0-9]/&#39;  
$pattern = array(&#39;/[0-3]/&#39;,&#39;/[4-6]/&#39;,&#39;/[7-9]/&#39;);  
$subject =&#39;weuyr3ui76as83s0ck9&#39;;  
//$replacement = &#39;球宝宝&#39;;  
$replacement = array(&#39;球&#39;,&#39;宝&#39;,&#39;宝&#39;);  
$str1 = preg_replace($pattern,$replacement,$subject);  
$str2 = preg_filter($pattern,$replacement,$subject);  
show($str1);  
echo &#39;<hr>&#39;;  
show($str2);  
function show($var = null){  
    if(empty($var)){  
        echo &#39;null&#39;;  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo &#39;<pre class="brush:php;toolbar:false">&#39;;  
        print_r($var);  
        echo &#39;
'; } else{ //string ,int ,float... echo $var; } } ?>

위의 두 예에서 preg_filter()와 preg_replacement()의 결과는 동일하므로 둘 사이의 차이점은 무엇입니까?

$subject = array('weuy','r3ui','76as83','s','0ck9');를 추가하면 둘 사이의 차이점이 표시됩니다:

a974b541f0baaa3fbdc2e2536727118c';  
show($str2);  
  
function show($var = null){  
    if(empty($var)){  
        echo 'null';  
    }  
    else if(is_array($var)||is_object($var)){  
        //array,object  
        echo 'e03b848252eb9375d56be284e690e873';  
        print_r($var);  
        echo 'bc5574f69a0cba105bc93bd3dc13c4ec';  
    }  
    else{  
        //string ,int ,float...  
        echo $var;  
    }  
}  
?>

위에서 다음과 같이 할 수 있습니다.

preg_replacement() 함수는 대체 단어 유무와 상관없이 표시되지만, preg_filter() 함수는 대체 단어가 없으면 표시되지 않는 것을 확인했습니다.

관련 추천:

PHP 정규식 공유

자주 사용하는 정규식 예제_정규식

PHP 정규식 요약

위 내용은 PHP에서 일반적으로 사용되는 정규식 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.