Странное поведение PHP UTF-8

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

Большое спасибо заранее

6
задан Peter Hough 11 November 2010 в 12:13
поделиться