繁体   English   中英

用 preg_replace 替换字符串中的数组变量

[英]Replacing array variables in string with preg_replace

我正在尝试使用 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$query中的所有$params替换为字符串的实际值。

我最初尝试过:

$query = preg_replace("(\$params\[[1-9]+[0-9]*\])",$query,$params);

但这似乎为 $query 创建了一个数组。

我希望得到:

$query =  'type=butter&color=yellow&taste=good&content=low-fat';

我哪里出错了?

您需要为此使用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

为什么不做这样的事情?

$params = array(
    'type' => 'butter',
    'color' => 'yellow',
    'taste' => 'good',
    'content' => 'low-fat'
);
$query = http_build_query($params);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM