根据名称获取文件名include_once文件

时间:2014-08-19 12:38:45

标签: php

我在页面目录中有多个文件。

除了我输入的内容之外,所有页面都是相同的 租赁检查。

bedroom1.php bedroom2.php bedroom3.php

但要让他们使用正确的标题我需要他们看到 根据自己的文件名更正标题。

bedroom1.php包含header1.php

bedroom2.php包含header2.php

bedroom3.php包含header3.php

.......

bedroom10.php包含header10.php

我可以很容易地获得文件名。

我试图使用preg_match(也许应该使用别的东西?) 但是没有在日志中出现任何错误,所以我不确定 我错过了什么,对文件比较不够了解 我输了。

编辑:添加:忘记添加,此代码在bedroom1.php等...

提前致谢

<?php

$file = $_SERVER["SCRIPT_NAME"];
$break = Explode('/', $file);
$pfile = $break[count($break) - 1];

if (preg_match('/bedroom . $i .php/', $pfile, $i)) {
    $number = $i[1];
    foreach(array('header') as $base) {
        include_once "$base$number.php";
    }
}

?>

5 个答案:

答案 0 :(得分:1)

应该是:

if (preg_match('/bedroom(\d+)\.php/', $pfile, $i)) {

您需要使用\d+来匹配数字,并将其放在括号内以使其成为捕获组,以便您可以使用$i[1]访问它。

答案 1 :(得分:0)

试试这个:

$file  = basename($_SERVER['SCRIPT_NAME'], '.php');
$base  = 'header';
$parts = array();
if (preg_match('/bedroom(\d+)/', $file, $parts)) {
    include_once $base . $parts[1] . '.php';
} else {
    // the file doesn't follow the bedroom{number}.php structure
}
祝你好运!

答案 2 :(得分:0)

$file = $_SERVER["SCRIPT_NAME"];
$baseName=basename($file);
$base="header";
preg_match_all('/\d+/', $baseName, $baseNameInt);
$basNameFile=$baseNameInt[0][0];

if(file_exists("$base$basNameFile.php")){
    include_once("$base$basNameFile.php");
} else {
    // ...
}

答案 3 :(得分:0)

使用此

basename($_SERVER['SCRIPT_NAME'])

你得到了剧本名称

答案 4 :(得分:0)

不确定您的数组包含哪些内容需要foreach(如果这只是示例代码),但为什么不呢:

$array  = array('header');
$suffix = str_replace($array, '', basename(__FILE__));

foreach($array as $base) {
    if(file_exist("$base$suffix")) {    
        include_once("$base$suffix");
    }
}

如果阵列中唯一的东西是header,那么就完全放弃循环。