⊗ppPmRgESCh 226 of 447 menu

Escaping dei caratteri speciali nelle espressioni regolari di PHP

Supponiamo di voler fare in modo che un carattere speciale rappresenti se stesso. Per fare ciò è necessario escaparlo utilizzando il backslash . Vediamo alcuni esempi.

Esempio

Nell'esempio seguente, l'autore dell'espressione regolare voleva che il modello di ricerca fosse così: la lettera 'a', poi il più '+', poi la lettera 'x'. Tuttavia, l'autore del codice non ha escapato il carattere '+' e quindi il modello di ricerca in realtà è così: la lettera 'a' una o più volte, poi la lettera 'x':

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a+x#', '!', $str); ?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'a+x ! ! !'

Esempio

Ora l'autore ha escapato il più con un backslash . Ora il modello di ricerca è come dovrebbe essere: la lettera 'a', poi il più '+', poi la lettera 'x'.

<?php $str = 'a+x ax aax aaax'; $res = preg_replace('#a\+x#', '!', $str); ?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ax aax aaax'

Esempio

In questo esempio, il modello è così: la lettera 'a', poi il punto '.', poi la lettera 'x':

<?php $str = 'a.x abx azx'; $res = preg_replace('#a\.x#', '!', $str); ?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! abx azx'

Esempio

Nell'esempio seguente, l'autore si è dimenticato di escapare il punto e l'espressione regolare ha catturato tutte le sottostringhe, poiché il punto non escapato rappresenta qualsiasi carattere:

<?php $str = 'a.x abx azx'; $res = preg_replace('#a.x#', '!', $str); ?>

Di conseguenza, nella variabile verrà memorizzato quanto segue:

'! ! !'

Esempio

Si noti che se ci si dimentica il backslash per il punto (quando dovrebbe rappresentare se stesso) - potrebbe passare addirittura inosservato:

<?php preg_replace('#a.x#', '!', 'a.x'); // restituirà '!', come volevamo ?>

Visivamente funziona correttamente (poiché il punto rappresenta qualsiasi carattere, incluso un punto normale '.'). Ma se si cambia la stringa in cui avvengono le sostituzioni - vedremo il nostro errore:

<?php preg_replace('#a.x#', '!', 'a.x abx azx'); // restituirà '! ! !', ma ci si aspettava '! abx azx' ?>
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