2014-09-28 44 views
0

我想在body标签后面的内容上使用shortcode函数。如何使用preg_replace反向引用而不是preg_match和preg_replace?

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); 

可有人请出示使用反向引用的一个可能的例子。

任何帮助表示赞赏。

回答

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;