2013-02-25 2 views
1

У меня есть строка, которая выглядит немного что-то вроде этого:preg_replace часть строки с переменной

$string = 'var1=foo&var2=bar&var3=blahblahblah&etc=etc'; 

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

$newstring = 'var1=foo&var2=bar&var3=$myVariable&etc=etc'; 

так var3 в новой строке будет значение $myVariable.

Как это можно достичь?

ответ

0

Для этого можно использовать метод preg_replace. Приводится пример

<?php 

$string = 'var1=foo&var2=bar&var3=blahblahblah&etc=etc'; 
$var = 'foo'; 

echo preg_replace('/var3=(.*)&/', 'var3=' . $var . '&', $string); 
3

Нет необходимости в регулярном выражении; встроенные функции URL должны работать более надежно.

// Parse the url first 
$url = parse_url($string); 

// Parse your query string into an array 
parse_str($url['query'], $qs); 

// Replace the var3 key with your variable 
$qs['var3'] = $myVariable; 

// Convert the array back into a query string 
$url['query'] = http_build_query($qs); 

// Convert the $url array back into a URL 
$newstring = http_build_url($url); 

Заканчивать http_build_query и parse_str. Это добавит переменную var3, даже если ее нет, она будет кодировать URL $myVariable и более читаема, чем с помощью preg_replace.

+0

Ну, у моей строки действительно есть URL-адрес; http://example.com/page?var1=foo&var2=bar&var3=$myVariable&etc=etc – user1687621

+0

@ user1687621 См. Мое обновление, которое * должно * работать. –

Смежные вопросы