我想使用简码包含文件,但是问题是preg_replace在for loop中无法正常工作。我的代码如下:
<?php
$output = "[@include('file1')] [@include('file2')]";
if(preg_match_all("/\[\@include\(\'(.*?)\'\)\]/", $output, $match)){
for($i=0;$i<count($match);$i++){
$output = preg_replace("/\[\@include\(\'(.*?)\'\)\]/", $match[1][$i], $output);
}
}
echo $output;
上面的代码打印“ file1 file1”,它应该同时打印“ file1 file2”两个文件名,但不是同时打印两个文件名。请告诉我我错了。
您要查找的内容已经在您的正则表达式的输出数组中(即在$match
数组中),您只需要使用即可implode()
!
<?php
$output = "[@include('file1')] [@include('file2')]";
preg_match_all("/\[\@include\(\'(.*?)\'\)\]/", $output, $match);
echo $out = implode(' ', $match[1]);
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句