我正在尝试在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);
有人可以展示使用反向引用的可能示例。
感谢任何帮助。
答案 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)
您需要使用preg_replace_callback