一個選項,將增加一個 「標記」。所以用<!-- HEADCODE-->
代替//Enter More Code Here Later
。
然後,後來,當你準備發送給客戶端(你提到使用使用ob_flush()),簡單地做:
$headContent = ''; //This holds everything you want to add to the head
$html = ob_get_clean();
$html = str_replace('<!-- HEADCODE-->', $headContent, $html);
echo $html;
如果你想獲得幻想,你可以創建一個類爲你管理這個。然後,而不是做ob_get_clean,只需添加一個回調ob_start。
class MyOutputBuffer {
$positions = array (
'HEAD' => '',
);
public function addTo($place, $value) {
if (!isset($this->positions[$place])) $this->positions[$place] = '';
$this->positions[$place] .= $value;
}
public function render($string) {
foreach ($this->positions as $k => $v) {
$string = str_replace('<!-- '.$k.'CODE-->', $v, $string);
}
return $string;
}
}
$buffer = new MyOutputBuffer();
ob_start(array($buffer, 'render'));
然後,在你的代碼,只是做$buffer->addTo('HEAD', '<myscript>');
這個解決方案很容易的工作。謝謝 – user293313 2010-06-16 00:40:33