preg_replace包含变量的字符串的一部分

时间:2013-02-25 02:00:25

标签: php regex preg-replace

我有一个看起来像这样的字符串:

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

我想从中创建另一个字符串,并用值替换它,所以例如它看起来像这样

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

所以新字符串中的var3将是$myVariable的值。

如何实现这一目标?

2 个答案:

答案 0 :(得分: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_queryparse_str。这将附加var3变量,即使没有变量,它也会对$myVariable进行网址编码,并且比使用preg_replace更具可读性。

答案 1 :(得分:0)

您可以使用方法preg_replace。这是一个例子

<?php

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

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