2011-04-14 117 views
0

这里是我的情况为例:PHP通过文件跳过在一定条件下

<?php 
if(//condition) 
{ 
    //start output buffer 
} 
else 
{ 
    //skip through file until POINT A 
} 
?> 
<!-- some nice html, no php here --> 
<?php 
    //close output buffer & write it to a file 
    //POINT A << SKIP TO HERE 
?> 

基本上,我加载的PHP代码块之后的HTML代码到输出缓冲区。我的条件检查输出缓冲区写入的文件是否存在。如果存在,我只想跳过HTML和输出缓冲区写入,并从POINT A开始。我会做一个exit;,但是我在POINT A后希望输出更多的代码。

任何帮助?

+0

你想使用什么PHP版本? – 2011-04-14 06:16:06

+0

难道你不能只将一个PHP字符串中的HTML? – Adam 2011-04-14 06:16:44

+0

@Alin PHP5,@Adam我可以,但我永远无法让HEREDOC为我工作。 – AKor 2011-04-14 06:22:26

回答

6
  1. 将条码封装在条件块中。
  2. 如果做1给出了一个太复杂的结构考虑使用标志。 $doPrintSectionA = false;并在打印某个部分之前检查该标志。
  3. 如果您的PHP> = 5.3,则可以使用goto语句。

请注意,打开和关闭PHP标记不会影响控件结构。例:

<?php 
if(rand(0,1)){ 
?> 

<b>Hello World!</b> 

<?php 
} 
?> 

而且最后警告:

enter image description here

+0

我使用了goto。谢谢! – AKor 2011-04-14 06:26:01

+0

@Sennheiser好的,但小心使用:http://xkcd.com/292/ – 2011-04-14 06:28:53

+2

@Sennheiser我真的建议你不要。你所要做的只是在某些条件成立的情况下执行一段代码,否则什么也不做。因此,如果条件在'if'块中是真的,并且忽略'else',那么就把你想要执行的所有代码放进去。这正是你想要的,并且更容易理解。当你在一个月后再次查看代码时,你会明白我的意思。 – deceze 2011-04-14 06:31:38

1
<?php 
if(//condition) 
{ 
    //start output buffer 
} 
else 
{ 
    //skip through file until POINT A 
?> 
<!-- some nice html, no php here --> 
<?php 
    //close output buffer & write it to a file 
<?php } ?> 
    //POINT A << SKIP TO HERE 
?> 
+2

你明白了。但它似乎票不受答案质量的影响,所以你很好。 – 2011-04-14 06:17:00

1
if (/* condition */) { 
    //start output buffer 
    <!-- some nice html, no php here --> 
    //close output buffer & write it to a file 
} 

您可能还需要来组织你的代码的功能,可能是独立的文件,甚至可能类。


其实不过,如果你正在做的是输出静态的HTML到一个文件,你可以跳过整个输出缓冲区文件写入程序,只需创建一个单独的静态HTML文件,句号。如果您想在此页面上显示,可能使用include 'file.html'

+0

需要一些php标签。 – keithjgrant 2011-04-14 06:26:06

+0

@keith由于这是非常多的伪代码,所以我会让OP填充这些代码。 – deceze 2011-04-14 06:28:23

1

你当然可以 “转到一个:” 在剧本,如果你正在使用PHP 5.3 - http://us.php.net/manual/en/control-structures.goto.php

使用goto的和巨大的if语句,你会得到一些非常粗糙的代码。以下是我的建议。

<?php 
if(//condition) 
{ 
    //start output buffer 
    include "content/page.html"; 
    //close output buffer & write it to a file 
} 

//POINT A 
?>