secvență de screening PHP

secvențe de escape

Backslash (# '\ #') are un număr de utilizări. În primul rând, în cazul în care acesta este precedat de un caracter non-alfanumeric, este nevoie de departe orice semnificație specială pe care l-ar putea avea. Utilizarea backslash ca un caracter de evacuare se aplică atât în ​​clasa de caractere cât și în afara acestuia.

De exemplu, dacă doriți să se potrivească cu caracterul „*“ în modelul trebuie să specifice „\ *“. Acest lucru va împiedica interpretarea ulterioară a simbolului ca metacaractere cu o semnificație specială. Este întotdeauna în condiții de siguranță pentru a scăpa de caractere non-alfanumerice cu „“ dacă doriți să vă asigurați ceea ce înseamnă într-un șablon de ei înșiși. În cazul special pentru comparație cu el însuși backslash, utilizați un record. „“

PHP-line. închise în ghilimele simple sau duble, backslash-ul este interpretat în moduri diferite. Prin urmare, dacă doriți să se potrivească \ \\ expresia regulată în PHP-cod este necesar să se utilizeze „\\“ sau # '# ​​\\\\'.

Dacă modificator Necunoscut PCRE_EXTENDED. spațiu gol de model (în afara clasei de caractere) sunt ignorate. De asemenea, o parte a liniei este ignorată, situată între simbolul „#“ (din nou, nu participă la descrierea unei clase de caractere) și caracterul de alimentare următoarea linie. În acest caz, backslash-ul poate fi folosit ca un caracter de evacuare pentru a indica evenimente de caracter sau spațiu alb „#“ în model.

Pentru a fi mai precis, combinația de „\ cx“ este interpretat după cum urmează: în cazul în care „x“ - un caracter cu literă mică, acesta este convertit în majuscule. După aceea, a șasea biți caracter (hex 40) este inversat. Astfel, "\ cz" este interpretată ca o valoare hexazecimală 1A, în timp ce "\ c" primește 3B valoare hexazecimală, și "\ c;" - 7B.

După „\ x“ citit încă două cifre hexazecimale (acestea pot fi scrise în majuscule sau minuscule). În modul UTF-8. permis să folosească „\ x“, unde conținutul acolade este un șir de cifre hexazecimale. Acesta este interpretat ca un simbol al codului de caractere UTF-8, care coincide cu numărul hexazecimal. Originalul secvență de evadare hexazecimal, \ xhh. Acesta coincide cu doi octeți UTF-8 caractere dacă valoarea depășește 127.

După „\ 0“ este citit două cifre octale. Atunci când se înregistrează cel puțin două cifre, toate care sunt prezente sunt folosite. Astfel, secvența „\ 0 \ x \ 07“ specifică două zerouri binare urmate de un simbol de avertizare (clopot). Dacă utilizați un cod octal, asigurați-vă că, după zero inițial, urmat de două cifre semnificative.

In interiorul clasei de caractere, sau în cazul în care valoarea primită este mai mare de 9 și un număr corespunzător de subpatterns offline, înainte, PCRE citește până la trei cifre octale după Backslash, și generează un singur octet de la cele mai puțin semnificativi 8 biți ai valorii. Toate cifrele ulterioare reprezintă pentru ei înșiși. De exemplu:

Trebuie reamintit faptul că valorile octale de 100 sau mai mare, ar trebui să fie un lider de la zero, pentru că ei nu citesc mai mult de trei cifre octale.

Toate secvență de a defini o singură valoare octet poate fi utilizat atât în ​​interiorul cât și în afara claselor de caractere. În plus, în interiorul unei clase de caractere, secvența „\ b“ este interpretat ca simbol de întoarcere (# „# backspace“, hex 08). Este un caracter de clasă are o valoare diferită (care este descris mai jos).

A treia utilizare a backslash - specificarea tipurilor de caractere generice:

\ D orice cifră zecimală \ D orice caracter care nu este o zecimală cifre \ h orice caracter orizontal spații (începând cu PHP 5.2.4 versiune) \ H orice caracter care nu este un caracter orizontal, spațiul liber (începând cu versiunea PHP 5.2.4) \ s orice caracter spațiu alb \ S orice caracter non-spațiu alb \ v orice vertical spațiul liber (versiunea PHP 5.2.4) \ V orice caracter care nu este un spațiu gol vertical (PHP versiunea 5.2.4) \ w orice "cuvânt" simbol \ W orice caracter care este „non-cuvânt“

Fiecare pereche de secvențe de evacuare despărțitoare set complet de caractere în două seturi disjuncte. Fiecare simbol corespunde unul și numai un singur set de pereche.

Următoarele simboluri sunt considerate "spațiu alb": HT (9), LF (10), FF (12), CR (13), și un spațiu (32). Cu toate acestea, în cazul în care este de căutare locale specifice, și nu va fi un meci cu personajele din intervalul 128-255, acestea vor fi percepute ca spațiu alb, de exemplu NBSP (A0).

Simbol, „cuvânt“ - este un număr arbitrar, o literă sau un caracter de subliniere, adică, orice caracter care poate face parte din „cuvântul“ în Perl. Definirea litere și cifre este controlat tabele de caractere, care au fost colectate de PCRE. În consecință, aceste seturi sunt diferite una de distribuții localizate. De exemplu, codul local „fr“ (Franța), unele coduri de caractere mai mare decât 128 sunt utilizate pentru literele accentuate, iar acestea sunt însoțite de \ w.

Aceste tipuri de caractere pot fi utilizate atât în ​​interiorul cât și în afara claselor de caractere, și corespund tipului de caractere. Dacă punctul curentă de comparație este la capătul liniei, nici unul dintre ei nu va fi capabil să se potrivească în sus, deoarece nu există nici un simbol, ceea ce ar putea întâmpla coincidență.

A patra utilizare a backslash - definirea unor declarații oficiale care descriu condițiile privind amplasarea pozițiilor specifice într-un rând și nu afectează ei înșiși personaje. Folosind un subpatterns mai complexe declarații oficiale descrise mai jos. Astfel de secvențe de control sunt:

\ B cuvânt limita \ B nu este o limită cuvânt \ A de date de pornire (indiferent de modul de multilinie) \ end Z a datelor sau poziția înainte de alimentarea ultima linie (indiferent de modul de multilinie) \ z sfârșitul datelor (indiferent de modul de multilinie) \ G prima potrivire poziţia în șirul

Aceste afirmații nu pot să apară în clase de caractere (dar rețineți că „\ b“, care este într-o clasă este un simbol de întoarcere # 'Backspace #').

O delimitare cuvânt este o poziție în linia de unde caracterul actual și anterior corespunde unui singur \ (celălalt \ W adică una se potrivește \ w. Și) sau w \ W. Începutul sau la sfârșitul liniei îndeplinesc, de asemenea, limita de cuvinte, în cazul în care primul sau, respectiv, ultimul caracter se potrivește \ w.

secvență specială \ A. \ Z și \ z diferă de circumflex și dolar tradiționale siruri de caractere # ^ # „Și sfârșitul liniei # „$ #“ (Descris în secțiunea ancore), astfel încât acestea se potrivesc întotdeauna fie începutul sau la sfârșitul liniei. Ele nu afectează opțiunea PCRE_MULTILINE și PCRE_DOLLAR_ENDONLY. Diferența dintre \ Z și \ z este că se potrivește \ Z înainte de ultimul caracter în cazul în care ultimul caracter - o linie nouă, cu excepția sfârșitul liniei. La acea vreme, ca \ z se potrivește doar la sfârșitul anului.

Aserțiunea \ G este valabil numai în cazul în care poziția curentă poate fi verificată la începutul unui meci, funcția de parametrul specificat preg_match offset (). Acesta diferă de la \ O valoare diferită de zero, atunci când parametrul de offset.

\ Q și \ E poate fi folosită pentru a ignora metasymbols model expresie regulată. De exemplu: .. \ W + \ Q $ \ E $ va coincide cu unul sau mai multe caractere care alcătuiesc „cuvântul“, urmat de simbolul $ .. și ancorarea la sfârșitul liniei.

Secvența \ K poate fi utilizată pentru a reseta începutul meciului începând cu versiunea PHP 5.2.4. De exemplu, modelul foo \ kbar coincide cu „foobar“, dar raportul care a coincis cu doar „bar“. Utilizarea \ K nu interferează cu instalarea subpatterns. De exemplu, în cazul în care modelul (foo) \ kbar coincide cu un șir de „foobar“, primul substringul va fi în continuare „foo“.

Note utilizator Contributie 7 note

articole similare