我试图以错误的方式同时使用preg_replace
和preg_replace_callback
。我做错了什么?
$str = '/admin/companies/{company}/projects/{project}/photos/{photo}/delete';
$pattern = '/({\w+})/';
$replacement = ['str_1', 'str_2', 'str_3'];
$i = 0;
$result = preg_replace_callback($pattern, function($matches) use ($i, $replacement) {
return $replacement[$i++];
}, $str);
/admin/companies/str_1/projects/str_1/photos/str_1/delete
/admin/companies/str_1/projects/str_2/photos/str_3/delete
答案 0 :(得分:2)
您希望通过引用传递$i
,因此在使用$i++
增加时会更新{<1}}:
$result = preg_replace_callback($pattern, function($matches) use (&$i, $replacement) {
return $replacement[$i++];
}, $str);
请注意&
之前的$i
。