如何使用preg_replace反向引用而不是preg_match和preg_replace?

时间:2014-09-28 15:21:26

标签: php preg-replace preg-match

我正在尝试在body标签之后对内容使用短代码功能。

preg_match("/<body[^>]*>(.*?)<\/body>/is", $html, $matches);
$html= preg_replace("/<body[^>]*>(.*?)<\/body>/is",run_shortcodes($matches[1]), $body);
echo $html;

这可以正常工作,但如果可能的话,我想用preg_replace反向引用来做这件事。

我尝试过这样的事情,但显然是错的

$html= preg_replace("/<body[^>]*>(.*?)<\/body>/is",run_shortcodes('$1'), $body);

有人可以展示使用反向引用的可能示例。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

以下是一个例子:

preg_match("/<body[^>]*>(.*?)<\/body>/is", $html, $matches);
$newBody = run_shortcodes($matches[1]);
echo preg_replace('/(.*<body[^>]*>)(.*)(<\/body>.*)/is', '${1}'.$newBody.'${3}', $html);

您也可以尝试:

$html = preg_replace_callback("/<body[^>]*>(.*?)<\/body>/is", 'run_shortcodes', $subject);
echo $html;

答案 1 :(得分:0)