Ho il seguente codice di prova PHP:Strano PHP UTF-8 Comportamento
header('Content-type: text/html; charset=utf-8');
$text = 'Développeur Web';
var_dump($text);
$text = preg_replace('#[^\\pL\d]+#u', '-', $text);
var_dump($text);
$text = trim($text, '-');
var_dump($text);
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
var_dump($text);
$text = strtolower($text);
var_dump($text);
$text = preg_replace('#[^-\w]+#', '', $text);
var_dump($text);
sulla mia macchina locale che sta funzionando come previsto:
string(16) "Développeur Web"
string(16) "Développeur-Web"
string(16) "Développeur-Web"
string(16) "D'eveloppeur-Web"
string(16) "d'eveloppeur-web"
string(15) "developpeur-web"
ma sul mio server dal vivo E 'comporta in modo strano:
string 'Développeur Web' (length=16)
string '-pp-' (length=4)
string 'pp' (length=2)
string 'pp' (length=2)
string 'pp' (length=2)
string 'pp' (length=2)
Il computer locale è Windows che esegue PHP versione 5.2.4 e il server live è CentOS con PHP versione 5.2.10 in modo non sono identici con nessun mezzo, non sono ideali, lo so.
Qualcuno ha sperimentato qualcosa di simile e può indicarmi la giusta direzione? Presumo che si tratti di una sorta di server o configurazione PHP relativa a UTF-8 o locale.
Molte grazie in anticipo
Strano. Non sono eccezionale con Regexes, puoi approfondire cosa sta facendo quel primo preg_replace() thingy? –
Inizialmente pensavo a 'mb_default_encoding()' ma quella libreria non ha alcuna connessione con le funzioni 'preg_ *'. –
La prima espressione regolare dovrebbe sostituire la lettera o le cifre con "-" viene da un tutorial di Symfony http://www.symfony-project.org/jobeet/1_4/Doctrine/en/08 –