• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

Sevenarth

Utente Assiduo
Autore del topic
25 Aprile 2008
524
57
Miglior risposta
0
Dopo tanto tempo, rieccomi, a presentarvi una guida sull'Espressioni Regolari.

Cosa sono e a cosa servono?
Le espressioni regolari vengono usate per facilitare il modo di ricerca nei contenuti. Nel PHP ci sono le funzioni Preg come preg_replace, che ci serve a trovare del qualsiasi testo che abbia come filtro l'espressione regolare e sostituendolo con una stringa determinata da noi, e preg_match, che ci serve a trovare in una stringa il contenuto con il filtro dell'espressione regolare e restituirne tutti i risultati.

Come si utilizzano?
Queste ci permettono di facilitare la ricerca, ma nell'utilizzo ci vuole molta cura nel crearle per la loro complicatezza.
Nelle espressioni regolari ci sono dei caratteri speciali che ci permettono di fare da filtro. I vari caratteri sono:

  • *, che ci permette di trovare zero o più occorrenze
  • ^, che determina l'inizio stringa, oppure in un filtro funge da operatore di negazione
  • $, che determina il fine stringa
  • ., che ci permette di trovare occorenze con tutti i caratteri compreso gli speciali
  • ?, che ci permette di trovare zero o un gruppo di occorrenze
  • {}, che ci permettono di determinare il numero massimo di lettere presenti in un'occorrenza
  • +, che ci permette di trovare una o più occorrenze
  • |, che indica l'operatore OR di PHP
  • \, che determina l'escape dei caratteri speciali, come quelli di questa lista, e di farli funzionare come contenuto
  • (), che ci permettono di creare un filtro di ricerca, usando questi caratteri speciali
  • [], che ci permettono di determinare al filtro che devono essere presenti solo i caratteri del gruppo racchiuso con queste
Spiegando meglio a cosa serve il backslash (\), praticamente se nell'espressione mettiamo </b>, lo slash presente nel tag, le REGEX (libreria delle espressioni regolari), lo riconosce come fine espressione, dal fatto che oltre a ^ e $, per iniziare e chiudere una stringa possiamo usare lo slash (/).
Invece le parentesi quadre ([]), ci permettono di inserire una serie di caratteri in questo modo a-zA-Z0-9, il trattino sta per l'ordine di tutte le lettere, per esempio a-b, ci permette di trovare tutte le lettere minuscole dalla a alla z, invece 0-9, tutti i numeri dal 0 al 9.
Le parentesi graffe ({}), invece quando inseriamo un filtro così ([a-zA-Z0-9]+) (Il + sta per trovare più occorrenze con quei caratteri), ci permettono di dire al filtro che deve trovare solo un numero massimo o minimo di lettere per esempio ([a-zA-Z0-9]+){1,3}, in questo caso ci devono essere minimo una lettera e massimo 3, oppure mettiamo {,5}, senza il numero minimo, che ci permette di dire che ci devono essere un massimo di 5 lettere, la stessa cosa vale per il numero minimo ({5,}).
L'operatore di negazione (^), scrivendo il filtro ([0-9]+), con questo si scrive ([^0-9]+) mettendolo nell'inizio della serie di caratteri, e in questo caso ci dice che nell'occorrenza ci devono essere tutti i caratteri, tranne i numeri che iniziano dallo 0 al 9.
Insieme a [a-zA-Z0-9] o altri per dire che ci devono essere anche altri caratteri aggiungiamo insieme a questi un escape (\) e il carattere, per esempio se vogliamo aggiungere lo slash mettiamo così la classe [a-zA-Z0-9\/].

Esempi Pratici
Filtro per trovare i BBCODE grassetto:
/\[B\]([a-zA-Z0-9]+)\[\/B\]/
Nell'espressione le parentesi quadre lo slash devono fungere da contenuto, e essendo caratteri speciali, possono essere interpretate dalle REGEX e quindi mettiamo l'escape. Attenti a non mettere l'escape allo slash finale o a quello iniziale, in questo caso ci dirà errore perchè non avremo messo o un operatore d'inizio espressione o un operatore di fine.
In questo caso per reperire il contenuto della prima occorrenza (([a-zA-Z0-9]+)), se useremo preg_replace, nel contenuto sostituitivo dobbiamo mettere $1, in questo caso mettiamo 1 perchè vogliamo il contenuto della prima occorrenza nell'espressione. Se ne mettessimo più di una le variabili della prima è $1 e della seconda è $2, a partire nell'espressione da sinistra.

Con PHP:
PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Per qualsiasi problema riportate qui :emoji_smiley: