Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Правильно вытаскиваю язык из [HTTP_USER_AGENT]?
 
 автор: maxam   (10.01.2010 в 12:28)   письмо автору
 
 

Что есть:
[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
$yazyk[1];

Верно?
А потом просто с помощью explode вывести:
$exp = explode ( '; ', $yazyk[1] );
echo $exp[2] // ru

  Ответить  
 
 автор: Maxam   (10.01.2010 в 14:33)   письмо автору
 
   для: 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)
 

даже так /[^,-]+/

  Ответить  
 
 автор: maxam   (10.01.2010 в 15:10)   письмо автору
 
   для: .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']

  Ответить  
 
 автор: Trianon   (11.01.2010 в 08:46)   письмо автору
 
   для: .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...
а может и совсем отсутствовать такой заголовок.

  Ответить  
 
 автор: @ndry   (11.01.2010 в 04:29)   письмо автору
 
   для: maxam   (10.01.2010 в 12:28)
 

А зачем вы это делаете? Очень часто информация, которая там указана, не валидная и иногда вы там вообще не найдёте языка.

  Ответить  
 
 автор: Fuelen   (12.01.2010 в 00:38)   письмо автору
 
   для: maxam   (10.01.2010 в 12:28)
 


<?php
$langs 
explode(',',preg_replace('/(;q=[0-9\.]+)/i'NULLstrtolower(trim($_SERVER['HTTP_ACCEPT_LANGUAGE']))));
$lang $langs[0];
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования