0

Sperate PHPインクルードファイル-ifの場合は角かっこ/中かっこ{}を開き、ファイル間の中かっこ/中かっこを閉じます。

みなさん、こんにちは。私は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ループの間にデザイナーのコードを入れたいと思います。だから私がしたことはこれでした:


include1.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 />

include2.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

ループにまたがることはできません。または、複数のインクルードにまたがるステートメントの場合、それが構文エラーの原因です。最善の方法は、ロジックとプレゼンテーションを真に分離するテンプレートシステムを採用することです。

手っ取り早い解決策は、デザイナーの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ループを閉じていません。したがって、そのファイルを実行/含めるとエラーが発生します。もし私があなたなら、HTMLフラグメントやPHPをいじる必要がないように、 SmartyTwigTemplating Systemのような本物を使用します。

于 2012-11-26T19:10:51.463 に答える