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
Форумы портала PHP.SU :: Версия для печати :: поиск текста после определенного слова
Форумы портала PHP.SU » PHP » Регулярные выражения » поиск текста после определенного слова

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

1. hanns-g - 11 Июня, 2010 - 02:14:12 - перейти к сообщению
Добрый день.

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

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

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

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

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

$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";
3. hanns-g - 11 Июня, 2010 - 10:35:50 - перейти к сообщению
Спасибо большое.


а если один из параметров не число а текст
тогда оно работать будет?
4. Phantik - 11 Июня, 2010 - 10:41:28 - перейти к сообщению
Для того что бы составить маску более четко под твою задачу нужно точно знать перечень всех символов из которых состоит имя параметра и его значение, а так же что является разделителем.

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

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

а мне хотелось бы узнать например что такое *S
когда надо какие скобки
7. Joo - 11 Июня, 2010 - 14:38:46 - перейти к сообщению
Скачайте программу RegexBuddy, там есть встроенный замечательный справочник. Да и программа эта, прекрасный инструмент.

\S - любой символ, за исключением пробелов, табуляций и переходов на новую строку
() - группировка
* - максимально возможное кол-во повторений данного символа (группы символов)
8. hanns-g - 11 Июня, 2010 - 15:05:50 - перейти к сообщению
Огромное спасибо
9. JustUserR - 11 Июня, 2010 - 16:25:29 - перейти к сообщению
hanns-g пишет:
Вот пример текста: myparam1=35 myparam2=30 myparam3=35
Я его прилепил к
Если у вас имеется текстовая база данных с аналогичными значениями при записи/извлечения значений из нее стоит производить шифровку/дешифроку - дело в том что записываемые данные могут совпаать с разделителем вашей БД и в таком случае ее структура нарушится

 

Powered by ExBB FM 1.0 RC1