PHP检查{login.PHP}是否查找出现的包含文件

PHP检查{login.PHP}是否查找出现的包含文件,php,include,replace,Php,Include,Replace,您好,我正在试图找到一种方法,如果我写{},并在这些简单代码之间插入一个文件名,它将从服务器获取该文件,并将其包含在{}所在的位置 $search = "[login]this is a test[members]"; $fetching = preg_replace('#\[([a-zA-Z0-9]+\.[a-z])\]#', '', $search); $fetch->getcontents($fetching); function getcontents($matches) {

您好,我正在试图找到一种方法,如果我写{},并在这些简单代码之间插入一个文件名,它将从服务器获取该文件,并将其包含在{}所在的位置

$search = "[login]this is a test[members]";
$fetching = preg_replace('#\[([a-zA-Z0-9]+\.[a-z])\]#', '', $search);
$fetch->getcontents($fetching);


function getcontents($matches) {
    //print $matches;

    $remove = array("[","]");
    $fetchfile = str_replace("[", "", $matches);
    $this->matches = str_replace("]", "", $fetchfile);
    $url = $this->matches;  

        $file = file_get_contents("modules/$url.php", FILE_USE_INCLUDE_PATH);
        print $file;
    }

最简单的方法是使用正则表达式函数

function get_contents($matches) {
    //return file_get_contents($matches[1]);
    return '::[file='. $matches[1] . ']::';
}

$search_string = 'I\'d like to replace stuff, ie. {login.php} and {logout.php}';

$replaced = preg_replace_callback('#\{([a-zA-Z0-9]+\.[a-z]+)\}#', 'get_contents', $search_string);

echo $replaced;
注;正则表达式未经测试,但可能会开箱即用。检查


---编辑,测试了功能,现在可以工作了

您希望远程文件或本地文件的内容包含在其中吗?您希望替换{}还是仅在它们之间保留数据?该文件将位于同一服务器上的文件夹下,我希望它也删除{}并将文件内容放在其中。
包括'path/to/file.php'
如何?这对你来说有多困难?这是行不通的,因为这是保存在MySQL数据库(Shef)中的。请注意所有的安全隐患,我需要使用“获取内容”吗?还是什么?我在想它不应该是$replace=preg\u replace\u callback('\{([a-zA-Z0-9]+\.[a-z])\},'$1',$search\u string)$此->获取内容($replace);顺便提一下当然,您应该在get_contents函数中添加一些测试,以检查文件是否存在、是否可读等。如果用户可以添加替换字符串,请检查是否允许包含该文件@罗素:不,看看php手册。但是如果您希望执行php代码,您应该执行类似于return include($matches[0])的操作;在get_contents()函数OK中,我还必须删除{和},因为这在这个脚本中不会发生,我将它放在函数中,因为我认为这将是最好的实践。我无法让它工作,当我有两个需要获取的东西时,比如[login]和[online],它就不会循环