我正在尝试使用RegEx来替换我创建的字符串中的数组值。
例如:
$params = array(1 => 'butter', 2 => 'yellow', 3 => 'good', 4 => 'low-fat');
$query = 'type=$params[1]&color=$params[2]&taste=$params[3]&content=$params[4]';
我想使用preg_replace
将$params
中的所有$query
替换为字符串的实际值。
我最初尝试过:
$query = preg_replace("(\$params\[[1-9]+[0-9]*\])",$query,$params);
但这似乎为$ query创建了一个数组。
我希望得到:
$query = 'type=butter&color=yellow&taste=good&content=low-fat';
我出错的任何想法?
答案 0 :(得分:2)
您需要使用preg_replace_callback
:
$val = preg_replace_callback('/\$params\[(\d+)\]/', function ($m) use ($params)
{ return $params[$m[1]]; }, $query);
//=> type=butter&color=yellow&taste=good&content=low-fat
答案 1 :(得分:0)
为什么不做这样的事情?
$params = array(
'type' => 'butter',
'color' => 'yellow',
'taste' => 'good',
'content' => 'low-fat'
);
$query = http_build_query($params);