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

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

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

 

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

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

тема: Отредактировать регулярное выражение
 
 автор: xexe   (09.06.2006 в 21:52)   письмо автору
 
 


$pattern = "|CHAR.*NAME=([^\s]+)[\s][^S]+ACCOUNT=.*01921\].*TYPE=([\d]+)[^\d]|isU";

Помогите немного подправить конец выражения- 01921\].*TYPE=([\d]+)[^\d]
т.е. когда найдено совпадение с 01921, то берется число из TYPE.
[ITEM 01921]
SERIAL=0400032d8
ID=01f4e
TYPE=91,0,0 <-вот тут взялось число 91
ATTR=094
CONT=04829

Только этот TYPE может быть, а может и не быть, по скольку его нету сразу, то он берется ниже не там, где надо.

[ITEM 01921] 
SERIAL=0400032d8 
ID=01f4e 
ATTR=094 
CONT=04829    

[ITEM 02222] 
ID=01f4e 
ATTR=094 
TYPE=22,1,0      получается что берется этот TYPE, а он не нужен
CONT=04829

Надо чтобы если сразу не найден TYPE, то не брать его ниже.

   
 
 автор: cheops   (10.06.2006 в 10:53)   письмо автору
 
   для: xexe   (09.06.2006 в 21:52)
 

Можно исправить регулярное выражение следующим образом
$pattern = "|CHAR[^\]]+NAME=([^\s]+)[\s][^S]+ACCOUNT=[^\]]+01921\][^\]]+TYPE=([\d]+)[^\d]|isU";

   
 
 автор: xexe   (10.06.2006 в 19:30)   письмо автору
 
   для: cheops   (10.06.2006 в 10:53)
 

нет теперь вобще ничего не выводит :((

еще вопрос
Например
NAME=Super Player
выводится только первая часть(до пробела), т.е. Super
Как сделать, чтобы выводилось Super Player

   
Rambler's Top100
вверх

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