>백엔드 개발 >PHP 튜토리얼 >PHP 정규식에 대해 자세히 알아보기

PHP 정규식에 대해 자세히 알아보기

墨辰丷
墨辰丷원래의
2018-06-06 09:57:461155검색

이 글은 주로 PHP 정규 표현식에 대한 심층적인 이해를 소개합니다. 관심 있는 친구들이 참고하면 도움이 될 것입니다.

php 정규 표현식 공유:

1. 정규 표현식 만들기

$regex = '/d/i';
은 JavaScript의 첫 번째 방법과 약간 비슷합니다. 여기에 있는 단어는 문자열입니다.

2. 정규 표현식의 특수 문자 . + * ? [ ^ ] $ ( ) { } > 정규식

의 함수에는 preg_match 및 preg_match_all, preg_replace 및 preg_replace_callback, preg_grep, preg_split, preg_last_error 및 preg_quote라는 8가지 메서드가 있습니다.

preg_match:

정규식 일치를 수행

패턴에 대한 일치 수를 반환 합니다. preg_match()는 첫 번째 일치 이후 검색을

중지하므로 해당 값은 0회(일치 없음) 또는 1회입니다.

$subject = "dd133aa2";
$pattern = '/\d+/';
preg_match($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

위의 샘플 코드는 "PREG_OFFSET_CAPTURE" 매개변수를 추가합니다. 이 경우 $matches에 오프셋 숫자가 하나 더 추가됩니다. 예를 들어 아래의 "2"

preg_match_all:

"전역" 정규식 일치를 수행합니다.

일치의 전체 수(아마도 0)를 반환하거나, 오류가 발생하면 FALSE를 반환합니다. . 아래 코드의 $subject와 $pattern은 위와 동일하지만 preg_match가 preg_match_all로 대체된다는 점만 다릅니다.

preg_match_all($pattern, $subject, $matches, PREG_OFFSET_CAPTURE);
print_r($matches);

반환된 횟수는 2번이고, $matches 배열의 입력을 보면 2번입니다. 위에 것보다 하나 더.

preg_replace:

정규식 검색 및 바꾸기 수행

주제가 배열이면 preg_replace()는 배열을 반환하고, 그렇지 않으면 문자열을 반환합니다. 일치하는 항목이 있으면 대체된 제목이 반환되고, 그렇지 않으면 변경되지 않은 제목이 반환됩니다. 오류가 발생하면 NULL이 반환됩니다.

코드에서 $subject는 두 개의 문자열 세트가 포함된 배열입니다. 다음 단계는 여러 숫자를 대문자 "Z"로 바꾸는 것입니다.

$subject = array("dd133aa2", "kk1ff3");
$pattern = '/\d+/';
$result = preg_replace($pattern, 'Z', $subject);
print_r($result);


preg_replace_callback:

정규식 검색을 수행하고 "콜백"을 사용하여 바꾸기

함수의 동작 외에도 다음을 지정할 수 있습니다. 교체 대신 콜백은 교체 문자열 계산을 수행하며 반환된 결과를 포함하여 preg_replace()와 동일합니다. 다음 코드도 대문자 "Z"로 대체됩니다. 콜백 함수의 각 $matches 내용은 코드에서 주석 처리된 부분입니다. 첫 번째는 133이고 두 번째는 2입니다.

$subject = "dd133aa2";
$pattern = '/\d+/';
$result = preg_replace_callback($pattern, function($matches) {
    //$matches [0] => 133
    //$matches [0] => 2
    return 'Z';
   }, $subject);
print_r($result);

preg_grep:

패턴

입력의 키를 사용하여 인덱싱된 배열 을 반환합니다. 아래 샘플 코드에서는 숫자가 포함되지 않은 $subject 배열에 "ddsdfd"를 추가했습니다.

$result2가 인쇄하는 것은 필터링된 것을 인쇄하지만 키는 여전히 0이 아닌 2입니다.

$subject = array("dd133aa2", "kk1ff3", "ddsdfd");
$pattern = '/\d+/';
$result = preg_grep($pattern, $subject);
$result2 = preg_grep($pattern, $subject, PREG_GREP_INVERT);
print_r($result);
print_r($result2);

preg_split:

정규 표현식으로 문자열 분할

 

返回一个使用 pattern 边界分隔 subject 后得到 的子串组成的数组。

下面代码中,我将$pattern中的表达式加了括号,为了在$result2中捕获到。

$subject = "dd133aa2cc";
$pattern = '/(\d+)/';
$result = preg_split($pattern, $subject);
$result2 = preg_split($pattern, $subject, null, PREG_SPLIT_DELIM_CAPTURE);
print_r($result);
print_r($result2);


preg_last_error:

返回最后一个PCRE正则执行产生的错误代码

preg_match(&#39;/(?:\D+|<\d+>)*[!?]/&#39;, &#39;foobar foobar foobar&#39;);
$result = preg_last_error();//PREG_BACKTRACK_LIMIT_ERROR 调用回溯限制超出
print_r($result);

preg_quote:

转义正则表达式字符

返回转义后的字符串

下面的代码中,$subject中有两个需要转义的字符,“.”和“?”。

将$result打印出后是“dd\.a\?a2cc”,而在$result2中,多加了个参数“a”,这样的话“a”也会被转义,“dd\.\a\?\a2cc”

$subject = "dd.a?a2cc";
$result = preg_quote($subject);
$result2 = preg_quote($subject, &#39;a&#39;);
print_r($result);
print_r($result2);

4、模式修正符

总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。

相关推荐: 

PHP生成PDF文件的方法

PHP MPDF中文乱码如何解决

PHP判断手机是IOS还是Android的三个方法

위 내용은 PHP 정규식에 대해 자세히 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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