У меня есть следующий тестовый код PHP:
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);
На моей локальной машине все работает как положено:
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"
но на моем живом сервере он ведет себя странно:
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)
Локальный компьютер - Windows с PHP версии 5.2.4, а работающий сервер - CentOS с PHP версии 5.2.10, поэтому они ни в коем случае не идентичны.
Кто-нибудь испытывал нечто подобное и может указать мне правильное направление? Я предполагаю, что это какая-то конфигурация сервера или PHP, связанная с UTF-8 или локалью.
Большое спасибо заранее