>백엔드 개발 >PHP 튜토리얼 >PHP 정규 표현식의 preg_match_all 함수에 대한 자세한 설명

PHP 정규 표현식의 preg_match_all 함수에 대한 자세한 설명

黄舟
黄舟원래의
2017-11-11 11:25:3812342검색

PHP 정규 표현식의 기능우리는 이전에 여러분을 위해 preg_match 함수를 만들었습니다. 여러분 모두 이에 대해 알고 있을 것입니다. 그렇다면 PHP 정규 표현식에서 preg_match_all 함수의 구체적인 용도는 무엇입니까? 오늘은 PHP 정규식에서 preg_match_all 함수에 대한 자세한 설명을 이해하도록 안내하겠습니다!

정규식을 이해하기 전에 일반적으로 사용되는 정규식에 대한 기본 지식을 숙지해야 합니다. 이러한 내용을 기억할 수 있으면 기억해 두는 것이 가장 좋습니다. 몇 가지 특수문자만 사용하면 됩니다. 자세한 내용은 정규식을 참조하세요.

preg_match_all 함수에 대한 자세한 지침은 PHP 매뉴얼을 확인하세요. 이 기사에서는 preg_match_all을 사용하여 정규 표현식의 효과를 테스트합니다.

예제 코드:

$html = &#39;<p id="biuuu">jb51.net</p><p id="biuuu_2">jb51.net2</p><p id="biuuu_3">jb51.net3</p>&#39;;

예제 요구 사항: biuuu, biuuu_2, biuuu_3, jb51.net, jb51.net2 및 jb51.net3(일반적으로 사용되는 일부 웹사이트 캡처 방법)과 같은 각 p 요소의 ID와 콘텐츠를 가져옵니다. 이것이 일치하는 방법입니다)

분석:

String은 기본 HTML 요소입니다. 각 p 요소는 ID와 콘텐츠에 해당하며 먼저 ID 값 내에서 p를 제거하는 방법과 독립적입니다. jb51.net과 같은 콘텐츠를 찾은 다음 다른 유사한 요소와 일치시킵니다. p에서 두 개의 값, 즉 두 개의 일치하는 표현식을 가져와야 합니다. 첫 번째 표현식은 ID 값(biuuu)을 일치시키는 데 사용되고 두 번째 표현식은 ID(jb51.net)의 내용을 일치시키는 데 사용됩니다. ). 표현식에 일반적으로 사용되는 정규식은 괄호를 사용하며, 이전 요소는 다음과 같은 형식이 됩니다.

<p id="(biuuu)">(jb51.net)</p> 
<p id="(表达式1)">(表达式2)</p>

좋습니다. 위의 괄호를 사용하여 일치해야 하는 영역을 나누십시오. 다음 단계는 각각 내에서 일치시키는 방법입니다. 표현식 내용에 따르면 ID는 문자, 숫자 또는 밑줄일 수 있으며 이는 기본이 되며 다음과 같이 대괄호를 사용하여 얻을 수 있습니다.

표현식 1:

[a-zA-Z0-9_]+ (表示匹配大小写字母,数字和下划线)

그런 다음 표현식 2를 일치시키는 방법 , 왜냐하면 ID의 내용은 임의의 문자일 수 있지만 < 또는 > 문자와 일치하지 않도록 주의하십시오. 왜냐하면 이 두 문자를 일치시키면 나중에 사용되는 모든 p가 일치하므로 다음으로 시작하는 요소를 제외해야 합니다. 즉, 다음과 같이 f1329f8b92097dc7fb062b4427699601로 시작하는 문자와 일치하지 않습니다.

표현식 2:

[^<>]+ (表示不匹配<和>字符)

이렇게 하면 일치해야 하는 하위 표현식이 구현되지만 일치해야 하는 표현식도 필요합니다. 방법은 다음과 같습니다.
Expression: / '"(Expression 1)"'>(Expression 2)94b3e26ee717c64999d7867364b1b4a3/
큰따옴표 " 및 /에 주의하세요. 이스케이프 문자로 이스케이프 처리하고 처음 두 개를 교체합니다. 표현식을 넣으면
는 다음과 같습니다.

 &#39;\"([a-z0-9_]+)\"&#39;>/<p id=\"([a-z0-9_]+)\">([^<>]+)<\/p>/

이렇게 하면 각 p 요소의 ID 값과 내용과 일치하는 정규 표현식이 생성됩니다. 구현한 후 preg_match_all 함수를 사용하여 다음과 같이 테스트합니다.

$html = &#39;<p id="biuuu">jb51.net</p><p id="biuuu_2">jb51.net2</p><p id="biuuu_3">jb51.net3</p>&#39;; 
preg_match_all('/([^<>]+)<\/p>/',$html,$result); 
var_dump($result);

결과:

array(3) { 
[0]=> array(3) 
{ [0]=> string(30) "<p id="biuuu">jb51.net</p>" 
  [1]=> string(33) "<p id="biuuu_2">jb51.net2</p>" 
  [2]=> string(33) "<p id="biuuu_3">jb51.net3</p>" 
  } 
[1]=> array(3) { 
  [0]=> string(5) "biuuu" 
  [1]=> string(7) "biuuu_2" 
  [2]=> string(7) "biuuu_3" 
  } 
[2]=> array(3) { 
  [0]=> string(8) "jb51.net" 
  [1]=> string(9) "jb51.net2" 
  [2]=> string(9) "jb51.net3" 
  } 
  }

3개의 Expression이 있는데 각각 각 표현식에 일치하는 값을 표시하고 이를 배열 형태로 저장하므로 각 p 요소의 ID와 내용을 검색할 수 있습니다. 정규식을 사용할 때 가장 중요한 것은 필요한 것이 무엇인지 파악한 다음, 명확한 아이디어로 매칭을 수행하고 preg_match_all 함수를 사용하는 것이 매우 편리합니다. 출력 디버깅을 수행합니다.

요약:

이 기사와 이전 기사를 읽은 후에는 모두가 PHP 정규 표현식에 대해 잘 알고 있다고 생각합니다. 두 함수 모두 각자의 이해와 이해가 있으므로 도움이 되기를 바랍니다.

관련 추천:

PHP 정규식의 preg_match 함수에 대한 자세한 설명


PHP 정규식 확인 이메일 주소 케이스


PHP 정규식 분석 예


PHP 정규식에 대한 자세한 소개

위 내용은 PHP 정규 표현식의 preg_match_all 함수에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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