di: Claudio Garau 12 Marzo 2010
Una difficoltà nel passaggio dalle funzioni POSIX alle PCRE potrebbe trovarsi nel modo in cui queste interpretano determinate tipologie di caratteri. Si consideri per esempio la funzione ereg_replace() che effettua sostituzioni sulla base di espressioni regolari e ha una sua alternativa nella funzione Perl compatibile preg_replace(); quando si passa un valore numerico a ereg_replace() ma si desidera che questo venga interpretato come il valore ASCII di un carattere (l'American Standard Code for Information Interchange che contiene i codici dei primi 128 caratteri numerati da "0" a "127"), per cui per esempio "13" deve corrispondere al ritorno a carrello ("\r") oppure "10" al passaggio ad una nuova linea ("\n"), la sintassi POSIX prevede una forma come la seguente:
// valore ASCII per l'inserimento di newline
$newline = 10;
// inserimento di una newline alla fine di una stringa
$sostituzione = ereg_replace('$', $newline, $stringa);
Diversamente, per fare in modo che il numero "10" venga utilizzato letteralmente nelle procedure di sostituzione all'interno di stringhe di testo, esso dovrà essere utilizzato sotto forma di valore stringa:
$valore = '10';
Questa problematica non si verifica invece quando si utilizza la funzione PCRE preg_replace(), essa infatti manipola il numero "10" interpretandolo esattamente per il suo valore letterale, cioè numerico e intero, senza prendere in considerazione il corrispondente valore ASCII; si presenta a questo punto il problema contrario (anche se decisamente meno frequente): come passare un valore ASCII alla funzione evitando che questa venga interpretata come numero? A questo scopo è necessario utilizzare innanzitutto un prefisso, "\x", poi si dovrà procedere con una conversione del numero nel suo corrispondente esadecimale; per cui, per esempio, il ritorno a carrello ha un corrispondente esadecimale "0D" mentre per la newline è "0A", il valore da passare a preg_replace sarà quindi "\x0d" nel primo caso e "\x0a" nel secondo.
In ogni modo, se lo si desidera sarà sempre possibile passare alla funzione una sequenza di escape nel suo formato letterale, quindi "\n" per la newline, "\t" per la tabulazione e così via.
Con il rilascio della versione 5.3 di PHP le funzioni ereg per le espressioni regolari POSIX sono state dichiarate deprecate e verranno rimosse dalla release 6 del linguaggio; utilizzarle non è quindi più una buona pratica, chi desidera impiegare un'alternativa potrà farlo grazie alle funzioni PCRE, coloro che sono alle prime armi nello sviluppo di applicazioni in PHP potranno semplicemente imparare l'utilizzo delle PCRE ignorando le POSIX.
Guida Yii FrameworkCome creare applicazioni Web in modo semplice e veloce con il... |
Guida Zend FrameworkDiventate professionisti dello sviluppo Web. Zend Framework è lo... |
Guida Applicazioni Facebook con PHPCome realizzare un'applicazione per Facebook. Dalle basi della... |
Ogni lunedì, direttamente nella tua e-mail: script, articoli, guide e tutorial su PHP, MySQL e Apache.
Iscriviti alla newsletter
|
|
Corso PHP per Webmaster11 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base25 Giugno 2012 a Milano |
|
|
Corso Google AdWords Base05 Giugno 2012 a Roma |