Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: RegExp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
1

Регулярным выражением поменять значение переменной var1, все остальные значения оставить прежними

25.07.2010, 11:04. Просмотров 1240. Ответов 11
Метки нет (Все метки)

есть полный урл с гет переменными, допустим такой:
http://mysite.com?var1=1&var2=2&var3=3
нужно, регулярным выражением поменять значение переменной var1, все остальные значения оставить прежними.
Всем буду очень благодарен...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2010, 11:04
Ответы с готовыми решениями:

Помогите с регулярным выражением
Нжно регулярное выражение, для замены определённых символов, по типу чатов или...

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

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

Помогите с регулярным выражением
Доброго времяни суток! Помогите написать регулярное выражение, ищу...

Определение ссылки регулярным выражением
Всем привет. Необходима помощь в написании двух регулярных выражений. 1. <a...

11
vers
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
25.07.2010, 14:10 2
В принципе должно вот это сработать:
PHP
1
2
3
$string = 'http://www.www.ru/index.html?var1=val1&var2=val2&var3=val3';
$string = preg_replace ('/[[:alnum:]]+(?=&)/', 'Новое значение', $string, 1);
print '$string';
0
vers
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
25.07.2010, 15:09 3
А если var1 содержит какие нибудь другие символы ....
PHP
1
$string = preg_replace ('/[[:alnum:]{_%#*@$()\|,./}<>!}+-]+(?=&)/', 'Новое значение', $string, 1);
Не знаю даже, можешь сам поменять набор симвлов
0
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
25.07.2010, 15:56  [ТС] 4
Теперь давай попробуем динамически подставлять искомое значение, сейчас нам нужно поменять значение var1, а потом пожет понадобиться поменять var2.
Как бы так подстроить твой шаблон для поиска имени переменной и замены значения у нужной?
Буду весьма признателен!
0
vers
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
25.07.2010, 16:25 5
А у тебя var1, var2 ... varn тоже динамические?
В смысле названия? Есть ли какая нибудь последовательность?
0
vers
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
25.07.2010, 17:37 6
PHP
1
2
3
4
5
6
7
$string = 'http://www.www.ru/index.html?var1=val1&var2=val2&var3=val3';
$string .= '&';
$var = 'var2';
preg_match ('/($var=)([[:alnum:]{_%#*@$()\|,./}<>!}+-]+(?=&))/', $string, $matches);
$string = str_replace ($matches[2], 'Новое значение', $string);
$string = substr($string, 0, -1); //убираем & котрый мы добавили в конец
print '$string';
Проблема другая ... если var1=val1&var2=val1?
0
vers
3 / 3 / 6
Регистрация: 20.06.2010
Сообщений: 580
25.07.2010, 17:45 7
PHP
1
$string = str_replace ($var.'='.$matches[2], $var.'='.'Новое значение', $string);
Так наверное будет без ошибок.
0
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
26.07.2010, 00:04  [ТС] 8
спасибо, буду пробовать!
Если ещё кто-ниубдь знает более короткий метод - напишите!
по сути от урла остаётся всё, что после '?', это облегчает задачу.
Нужно найти имя переменной по шаблону и поменять всё, что после знака '=' до знака '&' или конца строки.
0
evge
26.07.2010, 16:58 9
PHP
1
2
3
4
5
$arr=array();
parse_str($QUERY_STRING,$arr);
$arr[имя переменой]=новое значение;
$str = ''
foreach($arr as $k=>$v)$str.='$k=$v&';
sl_play
2 / 2 / 3
Регистрация: 25.05.2009
Сообщений: 2,576
26.07.2010, 21:09  [ТС] 10
СПАСИБО, ПОПРОБУЮ!
0
Alexandr_M
0 / 0 / 0
Регистрация: 19.06.2016
29.07.2010, 18:26 11
PHP
1
2
3
4
$new_var='new_value_var_1';
$st='http://mysite.com?var2=1&var3=2&var1=3';
$st=eregi_Replace('var1=[^&]+','var1=$new_var',$st);
print $st;
Меняешь $new_var на свое значение.
а var1 на var2 или др.
0
Alexandr_M
0 / 0 / 0
Регистрация: 19.06.2016
29.07.2010, 18:30 12
можешь изменять var1 или var2, var2 и var3. В общеи любую переменную.
К примеру:
PHP
1
2
3
4
$new_var='new_value_var_1';
$st='http://mysite.com?var2=1&var3=2&var1=3'
$st=eregi_Replace('var1=[^&]+','var1=$new_var',$st);
$st=eregi_Replace('var2=[^&]+','var2=2',$st);
присваивает $st:http://mysite.com?var2=2&var3=2&var1=new_value_var_1
0
29.07.2010, 18:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2010, 18:30

Проверка пароля регулярным выражением
Доброго времени суток форумчане, нужна ваша помощь ... в php новичок, и не со...

Не могу разобратся с Регулярным выражением
Не могу разобратся с Регулярным выражением Надо то что между тегами...

Проверка логина регулярным выражением
Валидные логины, например: a-a, a00, aaa-a, a_a, aaa, aaa0000-a, a-a-a, a-a_a...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru