2011-04-14 111 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 
?>