У меня есть следующий тестовый 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 или локалью.
Большое спасибо заранее