이 글은 주로 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 = '/[0-9]/'; $subject = 'weuyr3ui76as83s0ck9'; $m1 = $m2 = array(); preg_match($pattern,$subject,$m1); preg_match_all($pattern,$subject,$m2); show($m1); echo '<hr>'; show($m2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } 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 = '/[0-9]/'; $subject ='weuyr3ui76as83s0ck9'; $replacement = '球宝宝'; $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } 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 = '/[0-9]/' $pattern = array('/[0-3]/','/[4-6]/','/[7-9]/'); $subject ='weuyr3ui76as83s0ck9'; //$replacement = '球宝宝'; $replacement = array('球','宝','宝'); $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } else{ //string ,int ,float... echo $var; } } ?>
위의 두 예에서 preg_filter()와 preg_replacement()의 결과는 동일하므로 둘 사이의 차이점은 무엇입니까?
$subject = array('weuy','r3ui','76as83','s','0ck9');를 추가하면 둘 사이의 차이점이 표시됩니다:
<?php //preg_filter() preg_replace() //$pattern = '/[0-9]/' $pattern = array('/[0-3]/','/[4-6]/','/[7-9]/'); //$subject ='weuyr3ui76as83s0ck9'; $subject = array('weuy','r3ui','76as83','s','0ck9'); //$replacement = '球宝宝'; $replacement = array('球','宝','宝'); $str1 = preg_replace($pattern,$replacement,$subject); $str2 = preg_filter($pattern,$replacement,$subject); show($str1); echo '<hr>'; show($str2); function show($var = null){ if(empty($var)){ echo 'null'; } else if(is_array($var)||is_object($var)){ //array,object echo '<pre class="brush:php;toolbar:false">'; print_r($var); echo ''; } else{ //string ,int ,float... echo $var; } } ?>
위에서 다음과 같이 할 수 있습니다.
preg_replacement() 함수는 대체 단어 유무와 상관없이 표시되지만, preg_filter() 함수는 대체 단어가 없으면 표시되지 않는 것을 확인했습니다.
관련 추천:
위 내용은 PHP에서 일반적으로 사용되는 정규식 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!