Добрый день.
есть текст, который берется из БД и присваивается переменной
вот пример текста:
myparam1=35 myparam2=30 myparam3=35
я его прилепил к
$mparams = 'myparam1=35 myparam2=30 myparam3=99';
теперь мне надо достать значение(например значение последнего параметра), сделал таким способом:
preg_match('#myparam3=(.*?)#s',$mparams, $myparam3);
$my_param3 = $myparam3[1];
и ничего не получилось , никак не могу разобраться с этими масками...
помогите плизз
1. hanns-g - 11 Июня, 2010 - 02:14:12 - перейти к сообщению
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";
$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";
параметр и значение могут состоять из латинских букв и цифр, между параметром и значением должен идти символ "=" а пары должны разделяться между собой пробелом(ами).
Например для маски $mask = "/[a-z0-9]+=([a-z0-9]+)\s*/i";
параметр и значение могут состоять из латинских букв и цифр, между параметром и значением должен идти символ "=" а пары должны разделяться между собой пробелом(ами).
5. Joo - 11 Июня, 2010 - 13:56:27 - перейти к сообщению
Вот так еще, коротко и ясно, но в имени параметра и значения не должно быть пробелов: