⊗ppPmRgVA 258 of 447 menu

Lookahead în expresiile regulate PHP

Uneori trebuie să rezolvi o sarcină de acest tip: găsește șirul 'aaa' și înlocuiește-l cu '!', dar numai dacă după 'aaa' urmează 'x', iar 'x' în sine să nu fie înlocuit. Dacă încercăm să rezolvăm sarcina 'direct', nu vom reuși:

<?php preg_replace('#aaax#', '!', 'aaax'); // va fi '!', dar trebuie '!x' ?>

Pentru a rezolva sarcina, este nevoie de o modalitate de a spune, că 'x' nu trebuie înlocuit. Acest lucru se face cu ajutorul unor paranteze speciale (?= ), care doar se uită, dar nu preiau cu ele.

Aceste paranteze se numesc lookahead pozitiv. Pozitiv - pentru că 'x' (în cazul nostru) trebuie să fie prezent - doar atunci va avea loc înlocuirea.

Să aplicăm aceste paranteze pentru a ne rezolva sarcina:

<?php preg_replace('#aaa(?=x)#', '!', 'aaax'); // va returna '!x' ?>

Există și lookahead negativ - (?! ) - el, dimpotrivă, spune că ceva nu trebuie să fie. În următorul exemplu înlocuirea va avea loc doar dacă după 'aaa' nu urmează 'x':

<?php preg_replace('#aaa(?!x)#', '!', 'aaab'); // va returna '!b' ?>

Este dat un șir care conține nume de funcții:

<?php $str = 'func1() func2() func3()'; ?>

Obțineți un array cu numele funcțiilor din șir.

Este dat un șir cu o etichetă:

<?php $str = '<a href="" class="eee" id="zzz">'; ?>

Obțineți un array cu numele atributelor acestei etichete.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge