php 소경험치: 해석preg_match와preg_match_all 함수

정규 표현식은 PHP 응용 프로그램에서 주로 사용됩니다. 정규 표현식은 주로 다음과 같습니다. • 정규 일치: 정규 표현식에 따라 상응하는 내용 일치 • 정규 교체: 정규 표현식에 따라 내용 일치 및 교체 • 정규 분할: 정규 표현식 분할 문자열에 따라 PHP에는 두 가지 정규 표현식 함수가 있습니다. 하나는 Perl 호환 정규 표현식 함수이고 하나는 POSIX 확장 정규 표현식 함수입니다.양자의 차이가 크지 않고 Perl 호환 정규 표현식 함수를 추천하기 때문에 다음 글은 모두 Perl 호환 정규 표현식 함수를 예로 들어 설명한다.경계표Perl 호환 모드의 정규 표현식 함수이며, 정규 표현식은 경계표에 써야 한다.알파벳, 숫자 또는 백슬래시()가 아닌 문자는 모두 경계표로 사용할 수 있으며, 일반적으로 우리는/를 경계표로 사용한다.구체적인 사용은 아래의 예를 보십시오.제시는 정규 표현식 기능이 매우 강하지만 일반 문자열 처리 함수로 완성할 수 있다면 정규 표현식 함수를 사용하지 마세요. 정규 표현식의 효율이 훨씬 낮기 때문입니다.일반 문자열 처리 함수에 관하여.preg_match()preg_match () 함수는 정규 표현식 일치에 사용되며, 성공적으로 1을 되돌려줍니다. 그렇지 않으면 0을 되돌려줍니다.문법:intpreg_match(string pattern,string subject [,array matches]) 매개 변수 설명:
매개 변수
설명
pattern
정규 표현식
subject
읽어들일 객체 일치
matches
일치하는 결과를 저장하는 수조를 선택할 수 있습니다. $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와 일치합니다.프롬프트preg_match () 첫 번째 매칭이 성공하면 매칭이 중지됩니다. 모든 결과의 매칭을 실현하려면subject 끝에 검색하면preg_match_all () 함수.예2, 하나의 URL에서 호스트 도메인 이름:

<?php
// URL
preg_match("/^(http://)?([^/]+)/i","https://www.jb51.net/index.html", $matches);
$host = $matches[2];
//
preg_match("/[^./]+.[^./]+$/", $host, $matches);
echo " :{$matches[0]}";
?>
브라우저 출력:

:jb51.net
preg_match_all()preg_match_all () 함수는 정규 표현식 전역 일치를 위해 사용되며, 전체 모드 일치 횟수 (0) 를 성공적으로 되돌려줍니다. 오류가 발생하면 FALSE로 되돌려줍니다.문법:intpreg_match_all(string pattern,string subject,array matches[,int flags]) 매개 변수 설명:
매개 변수
설명
pattern
정규 표현식
subject
읽어들일 객체 일치
matches
일치하는 결과를 저장하는 그룹
flags
선택 사항, 일치하는 결과를 matches에 넣을 순서를 지정합니다. 선택할 수 있는 태그는 다음과 같습니다.
  • PREG_PATTERN_ORDER: 기본적으로 결과 정렬은 $matches[0]를 모든 모드에 일치하는 그룹으로 하고, $matches[1]는 첫 번째 괄호의 하위 모드에 일치하는 문자열로 구성된 그룹으로 추정됩니다
  • PREG_SET_ORDER: 결과 정렬은 $matches[0]를 첫 번째 그룹의 일치 항목의 수조, $matches[1]를 두 번째 그룹의 일치 항목의 수조로 추정합니다
  • PREG_OFFSET_CAPTURE: 이 태그를 설정하면 일치하는 결과마다 첨부된 문자열 오프셋을 반환합니다
  • 다음 예는 텍스트의 모든
     라벨에 있는 키워드(php)를 빨간색으로 표시하는 것을 보여 줍니다

    <?php
    $str = "<pre> php 。</pre><pre> phper !</pre>";
    $kw = "php";
    preg_match_all('/<pre>([sS]*?)</pre>/',$str,$mat);
    for($i=0;$i<count($mat[0]);$i++){
        $mat[0][$i] = $mat[1][$i];
        $mat[0][$i] = str_replace($kw, '<span style="color:#ff0000">'.$kw.'</span>', $mat[0][$i]);
        $str = str_replace($mat[1][$i], $mat[0][$i], $str);
    }
    echo $str;
    ?>
    정규 일치 중국어 한자 정규 일치 중국어 한자는 페이지 인코딩에 따라 약간 다르다. • 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] => 。
            )

    )

    좋은 웹페이지 즐겨찾기