>  기사  >  백엔드 개발  >  PHP 규칙성과 데이터 수집에 대한 자세한 설명

PHP 규칙성과 데이터 수집에 대한 자세한 설명

小云云
小云云원래의
2018-03-21 16:23:592968검색
  • PHP 정규식은 주로 문자열에 대한 패턴 분할, 일치, 검색 및 바꾸기 작업에 사용됩니다. 일부 간단한 환경에서는 정규식을 사용하는 것이 효율적이지 않을 수 있으므로 PHP 정규식을 더 잘 사용하는 방법을 종합적으로 고려해야 합니다.
    PHP 정규식 정의:
    문자 배열 및 일치 패턴을 설명하는 데 사용되는 문법 규칙입니다.
    PHP의 정규 함수:
    PHP에는 두 가지 정규 함수 세트가 있습니다. 두 일반 함수 세트는 각각 비슷한 기능을 가지고 있습니다.
    한 세트는 PCRE(Perl Compatible Regular Expression) 라이브러리에서 제공됩니다.
    POSIX(Portable Operating System Interface of Unix) 확장에서 제공하는 집합입니다. "ereg_" 접두사로 명명된 함수를 사용하세요.
    (POSIX 일반 함수 라이브러리는 PHP 5.3부터 더 이상 사용이 권장되지 않으며 PHP 6에서 제거됩니다.)
    POSIX 일반 함수가 역사적 단계에서 곧 시작될 예정이므로 PCRE Perl의 형태와 유사하고 Perl과 PHP 사이를 전환하는 것이 더 편리하므로 여기서는 PCRE 규칙성 사용에 중점을 둡니다.
    PCRE Regular Expression
    PCRE는 Perl Compatible Regular Expression의 약자로 Perl 호환 정규식을 의미합니다.
    PCRE에서 패턴 표현식(예: 정규 표현식)은 일반적으로 "/apple/"과 같이 두 개의 백슬래시 "/"로 묶입니다.
    정규 표현식의 중요한 개념은 메타문자, 이스케이프, 패턴 단위(반복), 반의어, 참조 및 주장입니다. 이러한 개념은 JavaScript로 쉽게 이해하고 익힐 수 있습니다.
    preg_filter — 정규식 검색 및 바꾸기
    preg_filter("regular", "replacement", "target");
    preg_grep ( string $pattern , array $input [, int $flags = 0 ] )
    preg_match — 정규식 수행 표현식 일치
    preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] )
    preg_match_all — 전역 정규식 일치
    preg_replace — 정규식 수행 검색 및 교체
    preg_split — 정규식으로 문자열 분할
    일반적으로 사용되는 메타 문자(메타 문자):
    메타 문자 설명
    A 문자열 시작 부분의 원자와 일치
    Z 문자열 끝 부분의 원자와 일치 문자열 Atom
    b 단어 경계와 일치 /bis/ 머리가 /isb/인 문자열과 일치 꼬리가 /bisb/인 문자열과 일치 Delimited
    B 단어 경계를 제외한 모든 문자와 일치 /Bis/ 단어 "와 일치
    d의 "is"는 숫자와 일치합니다. [0-9]
    D는 숫자를 제외한 모든 문자와 일치합니다. [^0-9]
    w와 일치합니다. 9a-zA-Z_]
    W 영어 문자, 숫자 및 밑줄을 제외한 모든 문자와 일치합니다. [^0-9a-zA-Z_]
    s와 동일합니다. 공백 문자와 일치합니다. [ftv]
    S 공백을 제외한 모든 문자와 일치합니다. ; [^ftv]
    f에 해당합니다. 폼 피드 문자와 일치합니다. x0c 또는 cL
    에 해당합니다. 개행 문자와 일치합니다. x0a 또는 cJ
    에 해당합니다. 반환과 일치합니다. 자동차 기호는 x0d 또는 cM
    t에 해당합니다. x09 또는 cl
    v와 일치합니다. x0b 또는 ck
    oNN과 일치합니다. 8진수와 일치합니다.
    xNN 16진수 시스템 숫자와 일치합니다.
    cC 제어 문자와 일치합니다.
    패턴 수정자:
    패턴 수정자는 특히 대소문자를 무시하는 데 사용됩니다. 여러 줄을 일치시키면 이 수정자를 마스터하면 우리가 직면하는 많은 문제를 해결할 수 있습니다.
    i - 대문자 및 소문자 모두 일치 가능
    M - 문자열을 여러 줄로 처리
    S - 문자열을 한 줄로 처리하고 개행 문자를 일반 문자로 처리하여 "."이 모든 문자와 일치하도록 함
    X - 공백 패턴 무시
    U - 가장 가까운 문자열과 일치
    e - 대체된 문자열을 표현식으로 사용
    형식: /apple/i는 대소문자를 무시하고 "apple" 또는 "Apple" 등과 일치합니다.          /i
    일치
    문자           설명
                          다음 문자를 특수 문자, 텍스트, 역참조 또는 8진수 이스케이프 문자로 표시합니다. 예를 들어, "n"은 문자 "n"과 일치합니다. "n"은 개행 문자와 일치합니다. 시퀀스 "\"는 ""와 일치하고 "("는 "("와 일치합니다.
    ^ 입력 문자열의 시작과 일치합니다. RegExp 개체의 Multiline 속성이 설정된 경우 ^는 "n" 또는 " 다음의 위치와도 일치합니다. r" .
    $ 입력 문자열의 끝과 일치합니다. RegExp 개체의 Multiline 속성이 설정된 경우 $는 "n" 또는 "r" 앞의 위치와도 일치합니다.
    * 앞의 문자 또는 하위 표현식과 0회 이상 일치합니다. 예를 들어 zo*는 "z" 및 "zoo"와 일치합니다. * {0,}와 동일합니다.
    + 앞의 문자나 하위 표현을 한 번 이상 일치시킵니다. 예를 들어, "zo+"는 "zo" 및 "zoo"와 일치하지만 "z"와는 일치하지 않습니다. + {1,}과 동일합니다.
    ? 앞의 문자나 하위 표현식이 0개 또는 1개와 일치합니다. 예를 들어, "do(es)?"는 "does"의 "do" 또는 "do"와 일치합니다. ? {0,1}과 동일합니다.
    {n} n은 음수가 아닌 정수입니다. 정확히 n번 일치합니다. 예를 들어, "o{2}"는 "Bob"의 "o"와 일치하지 않지만 "food"의 "o"는 모두 일치합니다.
    {n,} n은 음수가 아닌 정수입니다. n번 이상 일치합니다. 예를 들어, "o{2,}"는 "Bob"의 "o"와 일치하지 않지만 "foooood"의 모든 o와 일치합니다. "o{1,}"은 "o+"와 동일합니다. "o{0,}"는 "o*"와 동일합니다.
    {n,m} M과 n은 음이 아닌 정수입니다. 여기서 n ?    이 문자가 다른 한정자(*, +, ?, {n}, {n,}, {n,m}) 바로 뒤에 오면 일치 패턴은 "비탐욕"입니다. "non-greedy" 패턴은 검색되는 가능한 가장 짧은 문자열과 일치하는 반면, 기본 "greedy" 패턴은 검색되는 가능한 가장 긴 문자열과 일치합니다. 예를 들어 문자열 "oooo"에서 "o+?"는 단일 "o"에만 일치하는 반면 "o+"는 모든 "o"와 일치합니다.
    "n"을 제외한 모든 단일 문자와 일치합니다. "n"을 포함한 모든 문자를 일치시키려면 "[sS]"와 같은 패턴을 사용하십시오.
    [] [] 안의 모든 항목과 일치
    [^ ] [] 안의 항목과 일치
    1. 데이터 수집이란? 몇 년 전만 해도 몇몇 대형 포털을 제외하고는 기본적으로 개인 웹사이트였습니다. 정보가 흩어져 있고 내용이 많지 않습니다.
    몇 년 안에는 점점 더 많은 상업 웹사이트가 생길 것이고, 정보는 대량으로 집중되어야 할 것입니다. 많은 수의 편집자를 고용할 만큼 충분한 재정적 자원이 있더라도
    이를 충족하지 못할 수도 있습니다. 끊임없이 변화하는 정보 자원.
    정보 수집은 모든 웹사이트 운영자가 선호하는 기술이 되었습니다.
    2. ​​​​데이터 수집 아이디어:
    수집 프로그램의 아이디어는 매우 간단하며 대략 다음 단계로 나눌 수 있습니다.
    1. 원격 파일 소스 코드를 얻습니다(file_get_contents 또는 사용). fopen을 사용하거나 fsocket을 사용하여 http 프로토콜, php CURL 확장 또는 PHP의 기타 타사 오픈 소스 범주를 구현합니다.
    참고: File_get_Contents 및 FOPEN을 사용하지 않는 것이 가장 좋습니다. FSOCKET을 사용하여 HTTP 프로토콜의 GET을 구현한다고 상상해 보세요. 이제 대부분의 웹사이트는 수집 방지 기술을 사용하고 콘텐츠를 수집할 때 정보 추출 기술을 사용합니다.
    2. 코드를 분석하여 원하는 것을 얻습니다(여기서는 일반 매칭 사용).
      3. 획득한 콘텐츠를 기반으로 다운로드 및 보관 작업을 수행합니다.
    4. 웹페이지 레이아웃에 따라 데이터 표시
    3. 개인 수집 경험 공유:
    1. 핫링크로부터 보호되는 사이트를 사용하지 마세요. 실제로 원본을 위조할 수 있지만 이러한 사이트의 수집 비용은 다음과 같습니다. 너무 높음
    2. 최대한 빨리 수집하는 사이트의 경우 로컬에서 수집하는 것이 가장 좋습니다. 3. 수집할 때 먼저 데이터의 일부를 데이터베이스에 저장하고 다음 단계를 기다릴 수 있는 경우가 많습니다. 나중에 처리합니다.
    4. 수집 시 오류를 처리해야 합니다. 저는 보통 수집에 3번 실패하면 건너뜁니다.
    과거에는 콘텐츠를 선택할 수 없다는 이유로 콘텐츠를 고르지 못하는 경우가 많았습니다.
    5. 데이터베이스에 들어가기 전에 올바른 판단을 내리고, 내용의 합법성을 확인하고, 불필요한 문자열을 필터링해야 합니다.
    넷째: 링크 주소 공유: 정규식 온라인 테스트
    http://tool.chinaz.com/regex
    다섯째: 자주 사용되는 PHP 정규식 공유
    한자와 일치하는 정규식: [u4e00-u9fa5]
    Match Double -바이트 문자(한자 포함): [^x00-xff]
    HTML 태그와 일치하는 정규 표현식: /<(.*)>.*|<(.*) / >/
    정규식 일치 IP 주소 /(d+).(d+).(d+).(d+)/g
    정규식 일치 이메일 주소: w+([-+.]w+)*@w+ ([-.]w+)* .w+([-.]w+)*
    정규식 일치 URL: http://([w-]+.)+[w-]+(/[w- ./?%&=]*)? 일치 정보의 이미지 링크: /(s|S)(r|R)(c|C)*=*('|")?(w||/|. )+('|"| *|>) ?/
    정규 표현식을 사용하여 URL 주소에서 파일 이름을 추출합니다: /(.*/)([^.]+).*/ig
    중국 전화번호 확인/ ((d{3,4})|d{3 ,4}-)?d{7,8}(-d{3})*/
    중국 우편번호 확인/d{6}/
    이메일 확인/ w+([-+.]w+)*@w+([ -.]w+)*.w+([-.]w+)*/
    신분증 확인/d{18}|d{15}/
    일반적으로 사용되는 숫자 확인 /d{n}/ n은 지정된 길이입니다. /d{n,m}/ 길이 범위는 n부터 m까지입니다.
    잘못된 문자 확인
    < > 정규식[ ^날짜 확인
    일치 형식: 20030718,030718
    범위: 1900--2099
    정규식 ((((19){1}|(20){ 1}) d{2})|d{2})[01]{1}d{1}[0-3]{1}d{1}

관련 권장 사항:

PHP 일반 여부 결정 한자가 포함된 문자열 메서드 예제

PHP 정규식 요약

php 정규식 처리 방법

위 내용은 PHP 규칙성과 데이터 수집에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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