0

分开 PHP 包含文件 - 为 if 和 while 循环打开和关闭括号/大括号 { } 并在文件之间关闭大括号/大括号

大家好,我正在使用 PHP,包括:

include_once("include1.php");

还有一个非常有问题的 CSS/HTML 设计器。我试图让所有 PHP 远离设计人员,因为他们变得非常恐慌:\ 他们会产生许多问题,删除代码和东西并搞砸一切。

因此,我一直在使用 PHP 包含在其 HTML 之间必要的地方添加 PHP。

PHP 工作正常,错误为零。

正是将 PHP 分成多个包含文件导致了我的一些问题。

以下是我尝试分离的示例。

要分离的PHP:


<?php
$foo = 0;
$bar = 0;

if($foo == 0){

    $foo++;
    $bar++;
    // more php code

    while($foo < 20){

        $foo++;
        $bar++;
        // more php code

    // Now write the designers HTML here in this loop
    ?>  

        <BR /> Some HTML 
        <?php echo $foo; ?>
         more html 
        <?php echo $bar; ?>
        <BR /> More HTML <BR /> <BR />

    <?php
    // Done with the designers code -Now close my PHP here

   }// END while($foo < 5)

}// END if($foo == 0)
?>

我想把它分成 2 个包含 - include1.php 和 include2.php

我想让设计师在while循环之间编写代码。所以我做的是这样的:


包括1.php

   if($foo == 0){

    $foo++;
    $bar++;
    // more php code

      while($foo < 20){

        $foo++;
        $bar++;
       // more php code
   ?>

设计师 HTML 和一些混合的 PHP

    <BR /> Some HTML 
    <?php echo $foo; ?>
     more html 
    <?php echo $bar; ?>
    <BR /> More HTML <BR /> <BR />

包含2.php

    <?php
   // Done with the designers code -Now close my PHP here

  }// END while($foo < 5)

}// END if($foo == 0)
?>

我收到一个错误(“解析错误:语法错误,意外 $end in)

我有多个 if 和 while 和循环。

我的问题是:如何在没有错误的情况下分隔这些大括号/方括号?

谢谢

4

3 回答 3

2

无法跨越循环或跨多个包含的 if 语句,这就是导致语法错误的原因。最好的办法是采用真正分离逻辑和表示的模板系统。

一个快速而肮脏的解决方案是将设计者的 HTML 放入一个单独的.html文件中,并用占位符替换 PHP。在您的循环中,将占位符替换为内容。:

<BR /> Some HTML 
%%_Foo_%%
 more html 
%%_Bar_%%
<BR /> More HTML <BR /> <BR />
于 2012-11-26T19:03:45.103 回答
1

将您的 php 文件合并为 1 并从那里包含一个“设计师”模板文件,您将不会收到该语法错误。

<?php
$foo = 0;
$bar = 0;

if($foo == 0){

    $foo++;
    $bar++;
    // more php code

    while($foo < 20){

        $foo++;
        $bar++;
        // more php code

        include 'template.php'; // Include template here
        // No need to stick the remaining portion of this file into a seperate one

   }// END while($foo < 5)

}// END if($foo == 0)
?>
于 2012-11-26T19:06:34.173 回答
0

你不能那样做,当你包含 PHP 文件时,它们都必须是有效的 PHP。例如,在 include1.php 中,您没有关闭您的 while 循环。因此,执行/包含该文件将产生错误。如果我是你,我会使用SmartyTwigTemplating System等真正的工具来避免与 HTML 片段和 PHP 混淆。

于 2012-11-26T19:10:51.463 回答