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 :: поиск текста после определенного слова

 PHP.SU

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


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

> Описание: поиск текста после определенного слова
hanns-g
Отправлено: 11 Июня, 2010 - 02:14:12
Post Id


Новичок


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


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




Добрый день.

есть текст, который берется из БД и присваивается переменной
вот пример текста:
myparam1=35 myparam2=30 myparam3=35

я его прилепил к
$mparams = 'myparam1=35 myparam2=30 myparam3=99';

теперь мне надо достать значение(например значение последнего параметра), сделал таким способом:

preg_match('#myparam3=(.*?)#s',$mparams, $myparam3);
$my_param3 = $myparam3[1];

и ничего не получилось Огорчение , никак не могу разобраться с этими масками...
помогите плизз
 
 Top
Phantik
Отправлено: 11 Июня, 2010 - 10:13:03
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


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




Для конкретно твоего примера

$str = "myparam1=35 myparam2=30 myparam3=35";
$mask = "/myparam[0-9]+=([0-9]+)/i";
$res = preg_match_all($mask,$str,$matches);
print_r($matches[1]);


Более общий случай:
$mask = "/[a-z0-9]+=([a-z0-9]+)\s*/i";

(Отредактировано автором: 11 Июня, 2010 - 10:18:12)

 
 Top
hanns-g
Отправлено: 11 Июня, 2010 - 10:35:50
Post Id


Новичок


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


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




Спасибо большое.


а если один из параметров не число а текст
тогда оно работать будет?
 
 Top
Phantik
Отправлено: 11 Июня, 2010 - 10:41:28
Post Id


Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Июнь 2009  


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




Для того что бы составить маску более четко под твою задачу нужно точно знать перечень всех символов из которых состоит имя параметра и его значение, а так же что является разделителем.

Например для маски $mask = "/[a-z0-9]+=([a-z0-9]+)\s*/i";
параметр и значение могут состоять из латинских букв и цифр, между параметром и значением должен идти символ "=" а пары должны разделяться между собой пробелом(ами).
 
 Top
Joo
Отправлено: 11 Июня, 2010 - 13:56:27
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: Казахстан


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




Вот так еще, коротко и ясно, но в имени параметра и значения не должно быть пробелов:


-----
"Им будет не просто, тем кто полагается на истину авторитета, вместо ​того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
 
 Top
hanns-g
Отправлено: 11 Июня, 2010 - 14:19:42
Post Id


Новичок


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


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




Огромное спасибо!
все работает.
и еще плиз, может под рукой валяется ссылка,
где можно почитать и поучить про эти маски

тут просто маловато описано:
http://php.su/functions/?preg_match

а мне хотелось бы узнать например что такое *S
когда надо какие скобки

(Отредактировано автором: 11 Июня, 2010 - 14:24:25)

 
 Top
Joo
Отправлено: 11 Июня, 2010 - 14:38:46
Post Id



Гость


Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2009  
Откуда: Казахстан


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




Скачайте программу RegexBuddy, там есть встроенный замечательный справочник. Да и программа эта, прекрасный инструмент.

\S - любой символ, за исключением пробелов, табуляций и переходов на новую строку
() - группировка
* - максимально возможное кол-во повторений данного символа (группы символов)

(Отредактировано автором: 11 Июня, 2010 - 14:44:14)



-----
"Им будет не просто, тем кто полагается на истину авторитета, вместо ​того чтобы полагаться на авторитет Истины"
Джеральд Месси, Египтолог
 
 Top
hanns-g
Отправлено: 11 Июня, 2010 - 15:05:50
Post Id


Новичок


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


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




Огромное спасибо
 
 Top
JustUserR
Отправлено: 11 Июня, 2010 - 16:25:29
Post Id



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


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


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




hanns-g пишет:
Вот пример текста: myparam1=35 myparam2=30 myparam3=35
Я его прилепил к
Если у вас имеется текстовая база данных с аналогичными значениями при записи/извлечения значений из нее стоит производить шифровку/дешифроку - дело в том что записываемые данные могут совпаать с разделителем вашей БД и в таком случае ее структура нарушится


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB