preg_last_error 함수는 정규식 일치를 수행하는 데 사용됩니다.
문법
int preg_match ( 문자열 $pattern , 문자열 $subject [, 배열 &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
패턴으로 제공된 정규식과 일치하는 항목을 검색합니다.
매개변수 설명:
$pattern: 문자열 형식으로 검색할 패턴입니다.
$subject: 입력 문자열.
$matches: match 매개변수가 제공되면 검색 결과로 채워집니다. $matches[0]에는 전체 패턴과 일치하는 텍스트가 포함되고, $matches[1]에는 캡처된 첫 번째 하위 그룹과 일치하는 텍스트가 포함됩니다.
$flags: 플래그는 다음 플래그 값으로 설정할 수 있습니다.
PREG_OFFSET_CAPTURE: 이 플래그가 전달되면 문자열 오프셋(대상 문자열을 기준으로 함)이 일치 항목이 발생할 때마다 반환에 추가됩니다. 참고: 이는 match 매개변수에 채워진 배열을 변경하여 각 요소가 0번째 요소가 일치하는 문자열이고 첫 번째 요소가 대상 문자열 subject에서 일치하는 문자열의 오프셋이 되는 문자열이 됩니다.
offset: 일반적으로 검색은 대상 문자열의 시작 부분부터 시작됩니다. 선택적 매개변수인 offset은 대상 문자열의 알 수 없는 지점에서 검색을 시작하도록 지정하는 데 사용됩니다(단위는 바이트).
반환 값
패턴과 일치하는 항목 수를 반환합니다. preg_match()가 첫 번째 일치 후 검색을 중지하므로 해당 값은 0(일치 없음) 또는 1이 됩니다. preg_match_all()은 끝에 도달할 때까지 주제를 검색한다는 점에서 이와 다릅니다. 오류가 발생하면 preg_match()는 FALSE를 반환합니다.
예
텍스트 문자열 "php"를 찾으세요:
<?php // 패턴 구분 기호 뒤의 "i" 표시는 대소문자를 구분하지 않는 검색입니다. 만약에 ( preg_match ( " /php/i " , " PHP는 선택한 웹 스크립팅 언어입니다. " ) ) { 에코 " 일치
하는 문자열 php를 찾았습니다. " } 또 다른 { 에코 " 일치하는 문자열
PHP 가 없습니다. " ; ?> 실행 결과는 다음과 같습니다.
일치하는 문자열 php를 찾으세요.
"단어"라는 단어를 찾으세요
<?php /* 패턴의 b는 단어 경계를 표시하므로 "web" 또는 "cobweb"과 같은 단어의 부분 내용이 아닌 * 독립형 단어 "web"만 일치합니다. */ 만약에 ( preg_match ( " /bwebb/i " , " PHP는 선택한 웹 스크립팅 언어입니다. " ) ) { 에코 " 일치
하는 문자열을 찾습니다. n " } 또 다른 { 에코 " 일치하는
문자열 이 없습니다. n " ; 만약에 ( preg_match ( " /bwebb/i " , " PHP는 선택한 웹사이트 스크립팅 언어입니다. " ) ) { 에코 " 일치
하는 문자열을 찾습니다. n " } 또 다른 { 에코 " 일치하는
문자열 이 없습니다. n " ; ?> 실행 결과는 다음과 같습니다.
일치하는 문자열을 찾았습니다. 일치하는 문자열이 없습니다.
URL에서 도메인 이름을 가져옵니다.
<?php // URL에서 호스트 이름을 가져옵니다. preg_match ( ' @^(?:http://)?([^/]+)@i ' , " http://www.codercto.com/index.html " , $ matches ) $host = $matches [ 1 ] ; // 호스트 이름의 마지막 두 부분을 가져옵니다. preg_match ( ' /[^.]+.[^.]+$/ ' , $ host , $matches ) echo " 도메인 이름: {$matches[0]} n " ? > 실행 결과는 다음과 같습니다.
도메인 이름은: codercto.com
명명된 하위 그룹 사용
<?php $str = ' foobar: 2008 ' ; preg_match ( ' /(?P<name>w+): (?P<digit>d+)/ ' , $str , $matches ) / * 다음 예는 PHP입니다. 5.2.2(pcre 7.0) 이상에서는 호환성을 위해 위의 방법을 권장합니다. */ // preg_match('/(?<이름>w+): (?<숫자>d+)/', $str, $matches); print_r ( $일치 ) ? > 실행 결과는 다음과 같습니다.
Array( [0] => foobar: 2008 [이름] => foobar [1] => foobar [숫자] => 2008 [2] => 2008)