-1

私は次のコードを持っています

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

順序が変更され、置き換えられたコードが一番上に表示され、他のすべてが一番下に表示されるのはなぜですか。

4

1 に答える 1

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
于 2012-07-17T05:23:18.483 に答える