La funzione ereg_replace

Il linguaggio php consente di gestire con estrema cura le stringhe, ossia le variabili alfanumeriche utilizzate nel codice dello script.

Talvolta capita la necessità di pulire la stringa dai caratteri non standard come parentesi, virgole, punti esclamativi ecc.

Ad esempio, un'esigenza simile può capitare se lo script dovrà determinare il nome di file in cui scrivere. Per pulire la stringa da questi caratteri arrivano in aiuto la funzione ereg_replace() e la funzione str_replace().

Come pulire una stringa dai cararatteri non standard

La funzione ereg_replace() mi permette di sostituire tutti quei caratteri non compresi in un determinato range.

Ad esempio, per ottenere una stringa composta soltanto da numeri e caratteri dell'alfabeto maiuscoli o minuscoli, scrivo:

$stringa = ereg_replace("[^A-Za-z0-9 ]", "", $stringa );

Tutti i caratteri al di fuori del range A-Z, a-z e 0-9 sono sostituiti con un carattere vuoto "" ossia sono cancellati dalla stringa.

Per fare un esempio pratico, la stringa "forza italia!!!" viene trasformata in "forza italia".

Come sostituire i singoli caratteri

La funzione str_replace mi consente di eliminare o sostituire i singoli caratteri in una stringa.

Ad esempio, posso usarla per rimuovere tutti quei caratteri accentati che sono compresi nel range a-z ma che sarebbe meglio eliminare nel caso in cui la stringa debba essere utilizzata come nome di file.

Posso sostituire il carattere accentato con la sua equivalente lettera priva di accento.

$stringa = str_replace("à", "a", $stringa);
$stringa = str_replace("è", "e", $stringa);
$stringa = str_replace("é", "e", $stringa);
$stringa = str_replace("ì", "i", $stringa);
$stringa = str_replace("ò", "o", $stringa);
$stringa = str_replace("ù", "u", $stringa);

Se l'operazione deve essere effettuata più volte in uno script, mi conviene trasformare la sequenza di comandi in una funzione e richiamarla ogni volta che mi serve.

Per creare la funzione scrivo le seguenti righe di codice all'inizio dello script:

function puliscistringa($stringa)
{
$stringa = str_replace("à", "a", $stringa);
$stringa = str_replace("è", "e", $stringa);
$stringa = str_replace("é", "e", $stringa);
$stringa = str_replace("ì", "i", $stringa);
$stringa = str_replace("ò", "o", $stringa);
$stringa = str_replace("ù", "u", $stringa);
$stringa = ereg_replace("[^A-Za-z0-9 ]", "", $stringa );
return $stringa;
}

Poi posso richiamare la funzione ogni volta che mi serve. Ad esempio, per pulire il contenuto della variabile $nomefile posso scrivere nel seguente modo:

$nomefile = puliscistringa($nomefile);

Al termine dell'esecuzione della subroutine, la stringa $nomefile viene riconsegnata ripulita.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Il linguaggio Php

FAQ