Скорее всего, проблема чувствительности к регистру; eregi ('en-us') или preg_match ('/ en-us / i') должны были его поднять.
Тем не менее, просто поиск «en-us» в заголовке может иногда привести к ошибкам, особенно когда в списке указаны языки США и Великобритании. «Accept-Language» на самом деле довольно сложный заголовок, для которого действительно нужен правильный синтаксический анализатор.
Если у вас есть PECL, вся работа для вас уже выполнена: http://www.php.net/manual/en/function.http-negotiate-language.php
Я не знаю, почему другие ответы идут для заголовка User-Agent; это совершенно фальшиво User-Agent не обязан хранить значение языка в каком-либо конкретном месте, и для некоторых браузеров (например, Opera и некоторых второстепенных браузеров, о которых я никогда не слышал, называемых «Internet Explorer»), это вообще не будет. Где содержит язык, это будет язык, на котором была установлена сборка браузера, а не язык пользователя, на который вы должны смотреть. (Этот параметр будет по умолчанию установлен на языке сборки, но может быть изменен пользователем в пользовательском интерфейсе настроек.)