(PHP 4, PHP 5)
ereg_replace — Sostituzioni con espressioni regolari
$espressione_regolare
, string $testo_sostitutivo
, string $stringa
)
La funzione ricerca all'interno del parametro stringa
sottostringhe che incrocino con le condizioni specificate in
espressione_regolare
. Quando sono trovate, queste vengono sostituite
con il testo specificato in testo_sostitutivo
.
La funzione restituisce la stringa modificata. (Ciò implica che se non ci sono sottostringhe che soddisfino l' espressione regolare, la funzione restituisce la stringa originaria).
Se in espressione_regolare
si specificano
delle sottostringhe utilizzando le parentesi, anche nel campo
testo_sostitutivo
si possono specificare delle
sottostringhe di formato \\digit
, che saranno sostituite dalle stringhe soddisfacenti
la digit'esima condizione posta tra parentesi; \\0
indica l'intera stringa. La funzione prevede che si possano utlizzare
fino a nove sottostringhe. E' previsto che le parentesi siano
nidificate, in questo caso il conteggio si basa sulle parentesi aperte.
Se nessuna parte di stringa
viene riconosciuta,
il parametro viene restituito invariato.
Come esempio il seguente frammento di codice visualizzerà la frase "Questo fu un test" tre volte:
Example #1 ereg_replace() esempio
<?php
$stringa = "Questo è un test";
echo ereg_replace(" è", " fu", $stringa);
echo ereg_replace("( )è", "\\1fu", $stringa);
echo ereg_replace("(( )è)", "\\2fu", $stringa);
?>
Un aspetto a cui occorre prestare attenzione riguarda l'uso di
numero intero per il parametro testo_sostitutivo
,
si potrebbero ottenere risultati diversi da quanto atteso.
Questo accade perché la funzione ereg_replace()
interpreta il numero come posizione ordinale di un carattere
comportandosi di conseguenza. Ad esempio:
Example #2 ereg_replace() esempio
<?php
/* Questo non si comporta come atteso. */
$num = 4;
$stringa = "Questa stringa ha quattro parole.";
$stringa = ereg_replace('quattro', $num, $stringa);
echo $stringa; /* Risultato: 'Questa stringa ha parole.' */
/* Questo funziona. */
$num = '4';
$stringa = "Questa stringa ha quattro parole.";
$stringa = ereg_replace('quattro', $num, $stringa);
echo $stringa; /* Risultato: 'Questa stringa ha 4 parole' */
?>
Example #3 Sostituzione di URL
<?php
$testo = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]",
"<a href=\"\\0\">\\0</a>", $testo);
?>
Poiché utilizza espressioni regolari con sintassi compatibile con Perl, preg_replace(), è spesso una alternativa più veloce a ereg_replace().
Vedere anche ereg(), eregi(), eregi_replace(), str_replace() e preg_match().