⊗ppPmRgVA 258 of 447 menu

Lookahead nelle espressioni regolari di PHP

A volte è necessario risolvere un problema di questo tipo: trovare la stringa 'aaa' e sostituirla con '!', ma solo se dopo 'aaa' c'è 'x', e 'x' stesso non deve essere sostituito. Se proviamo a risolvere il problema in modo diretto, non avremo successo:

<?php preg_replace('#aaax#', '!', 'aaax'); // darà '!', ma dovrebbe essere '!x' ?>

Per risolvere il problema, è necessario un modo per dire che 'x' non deve essere sostituito. Questo si fa utilizzando parentesi speciali (?= ), che semplicemente controllano, ma non "consumano" i caratteri.

Queste parentesi sono chiamate lookahead positivo. Positivo - perché 'x' (nel nostro caso) deve esserci - solo allora avverrà la sostituzione.

Applichiamo queste parentesi per risolvere il nostro problema:

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

Esiste anche il lookahead negativo - (?! ) - che, al contrario, dice che qualcosa non deve esserci. Nell'esempio seguente la sostituzione avverrà solo se dopo 'aaa' non c'è 'x':

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

Data una stringa contenente nomi di funzioni:

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

Ottieni un array dei nomi delle funzioni dalla stringa.

Data una stringa con un tag:

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

Ottieni un array dei nomi degli attributi di questo tag.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta