|
|
|
| Что есть:
[HTTP_USER_AGENT] => Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.2.15 Version/10.10
|
Язык вытаскиваю:
$yazyk = preg_match ( '^/[(.*)] ([(.*)]) [(.*)]$/i' , $_SERVER[HTTP_USER_AGENT] );
|
Так я вытащу Windows NT 5.1; U; ru
Верно?
А потом просто с помощью explode вывести:
$exp = explode ( '; ', $yazyk[1] );
echo $exp[2] // ru
|
| |
|
|
|
|
|
|
|
для: maxam
(10.01.2010 в 12:28)
| | Запутался. | |
|
|
|
|
автор: .heed (10.01.2010 в 14:35) |
|
|
для: maxam
(10.01.2010 в 12:28)
| | легче попробовать из _SERVER["HTTP_ACCEPT_LANGUAGE"] вытащить
, типа /[^,]+/
в IE у меня вообще такое
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) | |
|
|
|
|
автор: .heed (10.01.2010 в 14:37) |
|
|
для: .heed
(10.01.2010 в 14:35)
| | даже так /[^,-]+/ | |
|
|
|
|
|
|
|
для: .heed
(10.01.2010 в 14:37)
| |
$yazyk = preg_match ( '/[^,-]+/i' , $_SERVER[HTTP_ACCEPT_LANGUAGE] );
echo $yazyk;
|
Так? | |
|
|
|
|
автор: .heed (10.01.2010 в 16:06) |
|
|
для: maxam
(10.01.2010 в 15:10)
| | >Функция preg_match() возвращает количество найденных соответствий
, Чтобы получчить строку нужно дополнительный параметр
> preg_match ( string pattern, string subject [, array &matches [, int flags [, int offset]]] )
, array &matches
, а так смотрите , может вам /^[A-Za-z]+/ удобнее , чтобы знать что там только буквы
strtoupper() strtolower() тоже можно использовать | |
|
|
|
|
автор: .heed (10.01.2010 в 16:09) |
|
|
для: .heed
(10.01.2010 в 16:06)
| | даже возможно просто
if (stripos($_SERVER[HTTP_ACCEPT_LANGUAGE], 'ru') !== FALSE)
будет хватать | |
|
|
|
|
автор: .heed (10.01.2010 в 16:11) |
|
|
для: .heed
(10.01.2010 в 16:09)
| | забыл кавычки
$_SERVER['HTTP_ACCEPT_LANGUAGE'] | |
|
|
|
|
|
|
|
для: .heed
(10.01.2010 в 16:09)
| | вообще-то там целый список языков с указанием уровней предпочтения. | |
|
|
|
|
автор: .heed (11.01.2010 в 18:46) |
|
|
для: Trianon
(11.01.2010 в 08:46)
| | Это смотря какой браузер
в этом.же IE просто "ru"
иногда RU-ru,ru,q=0.9,en,q......
иногда
ru,en-us,q...,en,q...
а может и совсем отсутствовать такой заголовок. | |
|
|
|
|
|
|
|
для: maxam
(10.01.2010 в 12:28)
| | А зачем вы это делаете? Очень часто информация, которая там указана, не валидная и иногда вы там вообще не найдёте языка. | |
|
|
|
|
|
|
|
для: maxam
(10.01.2010 в 12:28)
| |
<?php
$langs = explode(',',preg_replace('/(;q=[0-9\.]+)/i', NULL, strtolower(trim($_SERVER['HTTP_ACCEPT_LANGUAGE']))));
$lang = $langs[0];
?>
|
| |
|
|
|