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

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

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: preg_replace - не могу заменить никак ($_SERVER[HTTP_USER_AGENT])

Сообщения:  [1-10]   [11-16] 

 
 автор: TrEK   (01.03.2011 в 10:17)   письмо автору
 
   для: cheops   (27.02.2011 в 20:21)
 

Спасибо, все на "УРА!"

  Ответить  
 
 автор: cheops   (27.02.2011 в 20:21)   письмо автору
 
   для: TrEK   (27.02.2011 в 19:57)
 

Можно поступить следующим образом
if(preg_match('|Ubuntu/([0-9]{1,2}\.[0-9]{1,2}[\s]+[^\s]+[\s]+)|', $useragent , $out)) $os =$out[0];

  Ответить  
 
 автор: TrEK   (27.02.2011 в 19:57)   письмо автору
 
   для: TrEK   (25.02.2011 в 20:04)
 

Значит никак не получится?

  Ответить  
 
 автор: TrEK   (25.02.2011 в 20:04)   письмо автору
 
   для: cheops   (25.02.2011 в 19:14)
 

Конечно может быть другой

  Ответить  
 
 автор: Deed   (25.02.2011 в 19:58)   письмо автору
 
   для: cheops   (25.02.2011 в 19:14)
 

А если побить $useragent эксплодом по пробелам, а потом вытащить браузер array_pop'ом?

  Ответить  
 
 автор: cheops   (25.02.2011 в 19:14)   письмо автору
 
   для: TrEK   (25.02.2011 в 15:33)
 

Нет, \. - это символ точки, а у вас пробел, кроме того lucid заключено в круглые скобки. Напишите прямо так
if(preg_match('|Ubuntu/([0-9]{1,2}\.[0-9]{1,2} \(lucid\))|', $useragent , $out)) $os =$out[0];
Или последовательность (lucid) может быть другой?

  Ответить  
 
 автор: TrEK   (25.02.2011 в 15:33)   письмо автору
 
   для: cheops   (25.02.2011 в 14:20)
 

Ясно.
Тогда для строки:

Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12

должно быть так?:

if(preg_match('|Ubuntu/([0-9]{1,2}\.[0-9]{1,2}\.[a-z]{1,5})|', $useragent , $out)) $os =$out[0];
echo $os;

  Ответить  
 
 автор: cheops   (25.02.2011 в 14:20)   письмо автору
 
   для: TrEK   (25.02.2011 в 12:02)
 

>Где можно узнать как правильно орудовать этими ([0-9]{1.2}\.[0-9]{1,2}) ?
>Могли бы сделать маленький экскурс?
Все что заключено в квадратные скобки - это один символ, в данном случае от 0 до 9. В фигурных скобках указывается сколько раз этот символ может повторяться в данном случае от 1 до 2 раз.

  Ответить  
 
 автор: cheops   (25.02.2011 в 14:19)   письмо автору
 
   для: TrEK   (25.02.2011 в 12:02)
 

>if(preg_match('|Safari/([0-9]{1,2,3}\.[0-9]{1,2})|', $useragent , $out)) $browser = $out[0];
if(preg_match('|Safari/([0-9]{1,3}\.[0-9]{1,2}\.[0-9]{1,2})|', $useragent , $out)) $browser = $out[0];

>Что надо заменить в строке обработки, чтоб выводило не Firefox/3.6, а Firefox/3.6.13:
То же самое, что в предыдущей строке - нужно добавить третью цифру в регулярном выражении

>И почему-то не выводит версию этой ОС:
>if(preg_match('|Ubuntu/([0-9]{1.2}\.[0-9]{1,2})|', $useragent , $out)) $os =$out[0];
В конструкции {1.2} используется точка вместо запятой - это ошибка.

  Ответить  
 
 автор: TrEK   (25.02.2011 в 12:02)   письмо автору
 
   для: cheops   (25.02.2011 в 11:05)
 

Ясно., значит просто


<?php
if(preg_match('|Firefox/([0-9]\.[0-9]{1,2})|'$useragent $out))  $browser $out[0];
if(
preg_match('|Opera/([0-9]{1,2}\.[0-9]{1,2})|'$useragent $out))   $browser $out[0];
if(
preg_match('|Navigator/([0-9]\.[0-9]{1,2})|'$useragent $out))   $browser ="Netscape $out[0]";
if(
preg_match('|Chrome/([0-9]\.[0-9]{1,2})|'$useragent $out))   $browser =$out[0];
?>


Не выводит почему-то Safari:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4
if(preg_match('|Safari/([0-9]{1,2,3}\.[0-9]{1,2})|', $useragent , $out)) $browser = $out[0];

Что надо заменить в строке обработки, чтоб выводило не Firefox/3.6, а Firefox/3.6.13:
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13

И почему-то не выводит версию этой ОС:
Mozilla/5.0 (X11; U; Linux x86_64; ru; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.04 (lucid) Firefox/3.6.12
if(preg_match('|Ubuntu/([0-9]{1.2}\.[0-9]{1,2})|', $useragent , $out)) $os =$out[0];

================================================================

Где можно узнать как правильно орудовать этими ([0-9]{1.2}\.[0-9]{1,2}) ?
Могли бы сделать маленький экскурс?

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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