我有一个看起来像这样的字符串:
{{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
运行匹配吗?
答案 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]);
,以便打印实际匹配。