我有以下代码
return preg_replace_callback(
"#\{gallery: '(.+?)'(?: dir: ([0-1]))?\}#i",
create_function('$i', 'echo $i[1];' ),
$string);
我的问题是如果我的字符串看起来像这样:
top
{gallery: 'images/'}
center
{gallery: 'images/characters'}
bottom
渲染时它看起来像这样:
images/
images/characters
top center bottom
为什么订单被更改并将替换的代码置于顶部,将其他所有内容置于底部,即使是中间的东西?
答案 0 :(得分:2)
您应该在替换回调中使用return
语句:
$string = "top {gallery: 'images/'} center {gallery: 'images/characters'} bottom";
$string = preg_replace_callback(
"#\{gallery: '(.+?)'(?: dir: ([0-1]))?\}#i",
create_function('$i', 'return $i[1];'),
$string
);
echo $string . PHP_EOL;
// Outputs: top images/ center images/characters bottom