PHP 응용 프로그램에서 정규 표현식은 주로 다음 용도로 사용됩니다.
•정규 일치: 정규 표현식을 기반으로 해당 콘텐츠 일치
•정규 대체: 정규 표현식 기반 콘텐츠 일치
•정규 분할: 정규식에 따라 문자열을 분할합니다
PHP에는 두 가지 유형의 정규식 함수가 있습니다. 하나는 Perl 호환 정규식 함수이고 다른 하나는 POSIX 확장 정규식 함수입니다. 둘 사이에는 큰 차이가 없으며 Perl 호환 정규식 함수를 사용하는 것이 권장되므로 다음에서는 Perl 호환 정규식 함수를 예로 들어 설명합니다.
Delimiter
Perl 호환 모드 정규식 함수의 정규식은 구분 기호로 작성되어야 합니다. 문자, 숫자 또는 백슬래시()가 아닌 모든 문자를 구분 기호로 사용할 수 있습니다. 일반적으로 /를 구분 기호로 사용합니다. 구체적인 사용법은 아래 예를 참조하세요.
Tips
정규 표현식은 매우 강력하지만 일반 문자열 처리 함수로 완성할 수 있다면 정규 표현식 기능을 사용하지 않는 것이 좋습니다. 정규 표현식의 효율성이 훨씬 떨어지기 때문입니다. 일반적인 문자열 처리 기능에 대해.
preg_match()
preg_match() 함수는 정규식 일치에 사용되며, 성공하면 1을 반환하고 그렇지 않으면 0을 반환합니다.
구문:
int preg_match( 문자열 패턴, 문자열 주제 [, 배열 일치 ] )
매개변수 설명:
매개변수 | 설명 |
---|---|
pattern | 정규 표현식 |
subject | 검색된 |
matches | 선택 사항, 일치하는 결과를 저장하는 array인 $matches[0]에는 전체 패턴과 일치하는 텍스트인 $matches[가 포함됩니다. 1]에는 대괄호 안의 첫 번째 캡처된 하위 패턴과 일치하는 텍스트가 포함됩니다. |
예 1:
<?php if(preg_match("/php/i", "PHP is the web scripting language of choice.", $matches)){ print "A match was found:". $matches[0]; } else { print "A match was not found."; } ?>
브라우저 출력:
A match was found: PHP
이 예에서는 i 수정자를 사용하기 때문에 따라서 PHP의 텍스트는 대소문자를 구분하지 않고 일치합니다.
Tips
preg_match()는 첫 번째 일치가 성공한 후 일치를 중지합니다. 모든 결과를 일치시키려면, 즉 제목 끝까지 검색하려면 preg_match_all() 함수를 사용해야 합니다.
예 2, URL에서 호스트 도메인 이름 가져오기:
<?php // 从 URL 中取得主机名 preg_match("/^(http://)?([^/]+)/i","http://www.php.cn/index.html", $matches); $host = $matches[2]; // 从主机名中取得后面两段 preg_match("/[^./]+.[^./]+$/", $host, $matches); echo "域名为:{$matches[0]}"; ?>
브라우저 출력:
도메인 이름은: php.cn
preg_match_all()
preg_match_all() function 정규식의 전역 일치의 경우 전체 패턴이 일치하는 횟수가 성공적으로 반환되고(0일 수도 있음) 오류가 발생하면 FALSE가 반환됩니다.
구문:
int preg_match_all( 문자열 패턴, 문자열 제목, 배열 일치 [, int 플래그 ] )
매개변수 설명:
매개변수 | Description |
---|---|
pattern | 정규 표현식 수식 |
subject | 일치하고 검색해야 하는 개체 |
matches | 일치 결과를 저장하는 배열 |
flags | 선택 사항, 일치 결과가 일치 항목에 배치되는 순서를 지정합니다. 사용 가능한 플래그는 다음과 같습니다.
|
다음 예에서는 모든
텍스트의 태그 키워드(php)는 빨간색으로 표시됩니다.<?php $str = "<pre class="brush:php;toolbar:false">学习php是一件快乐的事。
所有的phper需要共同努力!"; $kw = "php"; preg_match_all('/
([sS]*?)/',$str,$mat); for($i=0;$i
정기 매칭 한자
정기 매칭 한자는 페이지 인코딩에 따라 조금씩 다릅니다:
•GBK/GB2312 인코딩: [x80-xff>]+ 또는 [xa1-xff]+
•UTF-8 인코딩: [x{4e00}-x{9fa5}]+/u
예:
<?php $str = "学习php是一件快乐的事。"; preg_match_all("/[x80-xff]+/", $str, $match); //UTF-8 使用: //preg_match_all("/[x{4e00}-x{9fa5}]+/u", $str, $match); print_r($match); ?>
출력:
Array ( [0] => Array ( [0] => 学习 [1] => 是一件快乐的事。 ) )
위 내용은 php: preg_match 및 preg_match_all 사용 예 비교의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!