Tengo el siguiente código PHP de prueba:extraño PHP UTF-8 Comportamiento
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);
en mi máquina local está funcionando como se esperaba:
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"
pero en mi servidor vivo Es un comportamiento extraño:
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)
La máquina local es Windows que ejecuta PHP versión 5.2.4 y el servidor en vivo es CentOS con PHP versión 5.2.10 no son idénticos de ninguna manera, no lo sé ideal.
¿Alguien ha experimentado algo similar y puede orientarme en la dirección correcta? Supongo que es algún tipo de servidor o configuración de PHP relacionada con UTF-8 o configuración regional.
Muchas gracias de antemano
Extraño. No soy genial con Regexes. ¿Puedes explicar qué está haciendo esa primera cosa preg_replace()? –
Inicialmente pensé en 'mb_default_encoding()' pero esa biblioteca no tiene conexión con las funciones 'preg_ *'. –
La primera expresión regular debe reemplazar no letras o dígitos con "-" viene de un tutorial de Symfony http://www.symfony-project.org/jobeet/1_4/Doctrine/en/08 –