preg_replace无法在for循环中工作

时间:2015-05-30 15:00:42

标签: php regex for-loop

我想使用短代码包含文件,但问题是preg_replace在for循环中无法正常工作。我的代码如下:

    <?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”这两个文件名但是它不打印这两个文件名。请告诉我哪里错了。

1 个答案:

答案 0 :(得分:0)

您正在寻找的内容已经在正则表达式的输出数组中(即在$match数组中),您只需要使用implode()获取它!

<?php
$output = "[@include('file1')] [@include('file2')]";
preg_match_all("/\[\@include\(\'(.*?)\'\)\]/", $output, $match);
echo $out = implode(' ', $match[1]);
?>