Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: помогите с preg_replace

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Arch-Web
Отправлено: 06 Ноября, 2010 - 14:07:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Июль 2010  
Откуда: Ukraine::Kiev


Помог: 1 раз(а)




Столкнулся с стакой проблемой

есть такая строка:
Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63

мне надо вытянуть версию
и записать в $os вот так:
Windows.NT.5.1

Делаю вот так:
$os = preg_replace( "/\(Windows ([NT]+) ([0-9.]+)\;/is", "Windows.\\1.\\2", $useragent );

но выводит вот это:
Opera/9.80 Windows.NT.5.1 U; ru) Presto/2.6.30 Version/10.63
 
 Top
vitaliy_mad
Отправлено: 06 Ноября, 2010 - 14:15:04
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match('/\((.+);/U','Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63',$m);
  2. $os=preg_replace('\s','.',$m[1]);

(Отредактировано автором: 06 Ноября, 2010 - 14:15:56)

 
 Top
Arch-Web
Отправлено: 06 Ноября, 2010 - 14:51:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Июль 2010  
Откуда: Ukraine::Kiev


Помог: 1 раз(а)




Спасибо за пример.
Но мне надо вытянуть не все что там есть а отдельно Windows потом NT и потом версию
делаю вот так
PHP:
скопировать код в буфер обмена
  1. preg_match('/\(([Windows]+) ([NT]+) ([0-9\.]+)\;/',$useragent,$this->Os);
  2. print_r($this->Os);


выводит:
Array ( )


п.с еще такой вопрос, что даеот такой текст в конце: s или is или i а то не могу найти что оно означает
п.с2 и чем отличается "/ /" и "# #"
 
 Top
vitaliy_mad
Отправлено: 06 Ноября, 2010 - 14:53:29
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. preg_match('/\((.+);/U','Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63',$m);
  2. $os=explode(' ',$m[1]);
  3. print_r($os);


Посмотрите что так выводит
(Добавление)
Цитата:
п.с еще такой вопрос, что даеот такой текст в конце: s или is или i а то не могу найти что оно означает
это модификаторы. i - регистронезависимость, s - если нен ошибаюсь, многострочность...
Цитата:
п.с2 и чем отличается "/ /" и "# #"
ничем. просто рахные разхделители выражения
 
 Top
Arch-Web
Отправлено: 06 Ноября, 2010 - 15:08:14
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Июль 2010  
Откуда: Ukraine::Kiev


Помог: 1 раз(а)




эм...

я же говорю что мне не надо вытаскивать весь текст который есть тут " (Windows NT 5.1; "

мне надо вытащить все по отдельности

тоисть сначало Windows потом NT и потом версию в таком формате [0-9\.]

и к примеру если там будет не Windows а что-то другое то функция не должна вытаскивать то что место текста Windows

и в array запишется только NT и версия

(Отредактировано автором: 06 Ноября, 2010 - 15:11:32)

 
 Top
vitaliy_mad
Отправлено: 06 Ноября, 2010 - 15:11:22
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. preg_match('/\(([Windows]+) ([NT]+) ([0-9\.]+)\;/','Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.6.30 Version/10.63',$m);
  3. print_r($m);
  4. (
  5.     [0] => (Windows NT 5.1;
  6.     [1] => Windows
  7.     [2] => NT
  8.     [3] => 5.1
  9. )
  10.  
 
 Top
Arch-Web
Отправлено: 06 Ноября, 2010 - 15:14:09
Post Id



Частый гость


Покинул форум
Сообщений всего: 177
Дата рег-ции: Июль 2010  
Откуда: Ukraine::Kiev


Помог: 1 раз(а)




Огромное вам спасибо
 
 Top
vitaliy_mad
Отправлено: 06 Ноября, 2010 - 15:15:13
Post Id


Участник


Покинул форум
Сообщений всего: 1107
Дата рег-ции: Окт. 2008  
Откуда: Украина, Мариуполь


Помог: 0 раз(а)




вообщето последний вариант - это ваша конструкция.... почему она у вас не работала? кто знает...
 
 Top
Саныч Модератор
Отправлено: 06 Ноября, 2010 - 21:18:56
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




А не чего, что в квадратных скобках идет перечисление и под вашу регулярку может попасть любое слово? Хм


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
OrmaJever Модератор
Отправлено: 06 Ноября, 2010 - 21:22:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Может не по теме но толку мало брать версию. Все последние версии оперы определяет как 9.80 Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Саныч Модератор
Отправлено: 06 Ноября, 2010 - 21:30:34
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




Ну почему же 9.80? В самом конце строки Version/10.63... Вот она и версия, и везде разная)


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB