将PHP和HTML代码加载到


Load PHP and HTML code to a PHP variable echoed in a <div>

中回显的PHP变量中。

我的例子如下。我有以下脚本:

<?php
// ... other code ...
switch($_GET['request'])    {
        case "firstPage":
            $file = APP_ROOT. "pages/firstPage.php";
            $hndle = fopen($file,"r");
            $right_column = fread($hndle, filesize($file));
            fclose($hndle);
            break;
        case "secondPage":
            $file = APP_ROOT. "pages/secondPage.php";
            $hndle = fopen($file,"r");
            $right_column = fread($hndle, filesize($file));
            fclose($hndle);
            break;
    }
}
?>
<div id="right_column">
    <?php echo $right_column;?>
</div>
// ... other code ...

根据$_GET['request']的值,我分配给变量$right_column php文件的内容。然后,在最后一个div中回显该变量。firstPage.php和secondPage.php文件包含html和php混合代码。我寻找像Zend中的"部分"那样的解决方案。由于

首先,你的代码很糟糕,它应该是这样的:

$pages = array(
   'firstPage'   => 'pages/firstPage.php',
   'secondPage'  => 'pages/secondPage.php'
);
$request = 'firstPage';
if ( array_key_exits($_GET, 'request') 
 &&  array_key_exists($pages, $_GET['request']) )
{
   $request = $_GET['request'];
}
?>
<div id="right_column">
    <?php include  APP_ROOT . $pages[ $request ]; ?>
</div>

请阅读http://codeangel.org/articles/simple-php-template-engine.html,你可能会发现这很有趣。它应该向您解释如何轻松地利用php的本地模板功能。

实际上,读取和转储文件并不是一个解决方案。你只是在向你的终端用户显示代码。

您需要的是解析PHP文件并显示结果。有两种方法:

首先,代替

 $file = APP_ROOT. "pages/firstPage.php";
 $hndle = fopen($file,"r");
 $right_column = fread($hndle, filesize($file));
 fclose($hndle);

你可以这样做:

$right_column = include(APP_ROOT . "pages/firstPage.php");

所以,你的firstPage.php必须返回代码。像这样:

// firstPage.php
return "my html";

但是你也可以像这样包含它:

<div id="right_column">
    <?php include(APP_ROOT . "pages/firstPage.php"); ?>
</div>

或者,可以使用ob_get_contents。PHP有一个很好的关于如何使用它的文档。

我用include

如果设置一个变量来指示要包含哪个PHP文件,那么可能会更简单,然后不读取文件,而只是包含它。例如:

<?php
// ... other code ...
switch($_GET['request'])    {
        case "firstPage":
            $file = APP_ROOT. "pages/firstPage.php";
            break;
        case "secondPage":
            $file = APP_ROOT. "pages/secondPage.php";
            break;
    }
}
?>
<div id="right_column">
    <?php include($file);?>
</div>
// ... other code ...

如果你的firstPage.php和secondPage.php文件只有HTML,你所做的是可以工作的。如果它有PHP,那么你需要include()它;或者你可以用eval(),但这又比你需要做更多的工作

在我看来,你可以按惯例编程,而不是有一个不断增加的开关语句:

<?php
// ... other code ...
$file = '';
if (isset($_GET['request'])) {
    $safeFileName = sanitizeRequestForFileName($_GET['request']);
    $file = APP_ROOT. 'pages/' . $safeFileName . '.php';
}
?>
<div id="right_column">
    <?php 
        if (file_exists($file)) {
            include($file);
        }
    ?>
</div>
// ... other code ...