正则表达式替换以在PHP中创建模板

时间:2011-12-17 21:14:46

标签: php regex

我有一个看起来像这样的字符串:

{{imagename.jpg|left|The caption for this image. Includes a variety of chars}}
<p>Some text, lots of paragraphs here.</p>
{{anotherimage.jpg|right|Another caption.}}

我要做的是解析{{}}位然后通过函数传递它们。到目前为止我所拥有的是:

function template_function($matches) {
    print_r($matches);
}

function parse_images($string) {
    $string = preg_replace_callback('!\{\{([^}])\}\}!', 'template_function', $string);
    return $string;
}

有人可以帮助我使用正则表达式,这样我最终可以通过print_r运行匹配吗?

2 个答案:

答案 0 :(得分:1)

您错过了*(或许,+)量词。您的原始表达式只匹配单个非}字符。

$string = preg_replace_callback('!\{\{([^}]*)\}\}!', 'template_function', $string);

答案 1 :(得分:1)

function template_function($matches) {
    print_r($matches[1]);
}

function parse_images($string) {
    $string = preg_replace_callback('/\{\{([^}]*)\}\}/', 'template_function', $string);
    return $string;
}

还修改了print_r($matches[1]);,以便打印实际匹配。