2011-09-24 52 views
0

有沒有辦法將這段代碼保存到PHP變量中?這樣做的原因是因爲我想通過mail()如何將此代碼保存到變量中?

echo 'MONDAY<BR>'; 
query_posts('meta_key=Date1&meta_value=MONDAY'); 
while (have_posts()): 
    the_post(); 
    if (in_category('11')) { 
     echo get_post_meta($post->ID, 'HomeSlogan', true); 
    } else { 
     the_title(); 
    } 
    echo'<br>'; 
endwhile; 

發送它這是zneak表明

<?php 

ob_start(); 
echo 'MONDAY<br>'; 
query_posts('meta_key=Date1&meta_value=MONDAY'); 
while (have_posts()): 
    the_post(); 
    if (in_category('11')) { 
     echo get_post_meta($post->ID, 'HomeSlogan', true); 
    } else { 
     the_title(); 
    } 
    echo'<br>'; 
endwhile; 

$mail = ob_get_contents(); 
echo $mail; 
ob_end_clean(); 

?> 
+0

我不知道這是如何總是你的代碼格式,但它是非常不可讀的。 –

+0

@JaredFarrish什麼是用於格式化的工具?我使用記事本,所以稍後格式化。 – EnexoOnoma

+0

即使在代碼編輯器中,我也可以手工格式化;我最初使用記事本學習並使用它多年(現在我使用Dreamweaver,但僅用於代碼突出顯示)。不要*以後格式*;用PHP等C風格語言進行格式化可以提高**的可讀性,並幫助您和其他人以更一致的方式閱讀和理解您的代碼。 –

回答

1

您可以使用字符串連接,避免echo完全,或使用輸出緩衝。輸出緩衝將腳本的輸出保存到緩衝區中,而不是將其發送到瀏覽器,因此如果您有打印文本並且無法真正控制的功能,則它更易於使用。

// concatenation 
$mail = 'MONDAY<br>'; 
$mail .= 'more text'; 
$mail .= 'yet more text'; 

// output buffering 
ob_start(); 
echo 'MONDAY<br>'; 
echo 'more text'; 
echo 'yet more text'; 

$mail = ob_get_contents(); 
ob_end_clean(); 

對於輸出緩衝,你可能想了解ob_startob_get_contentsob_end_clean

+0

一個while循環? – EnexoOnoma

+1

@Giorkouros - 在'ob_start()'和'ob_get_contents()'之間放置'while'循環。 –

+0

我用你的例子更新了我的問題,但是我沒有得到任何輸出... – EnexoOnoma