이 글은 주로 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()와 동일합니다. 다음 코드도 대문자 "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('/(?:\D+|<\d+>)*[!?]/', 'foobar foobar foobar'); $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, 'a'); print_r($result); print_r($result2);
4、模式修正符
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
위 내용은 PHP 정규식에 대해 자세히 알아보기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!