2012-04-11 75 views
1

我想將變量$ all放在$ code的中間,這是從另一個文件中收集的HTML代碼。我目前的代碼是這樣的。如何在另一個內部渲染變量?

ob_start(); 
---code here--- 
$all = ob_get_clean(); 
$code = file_get_contents("file.txt"); 
echo $code; 

file.txt看起來有點像這樣。

<html> 
<head> 
<title>Title</title> 
</head> 
<body> 
---HTML code here--- 
$all 
---More HTML code--- 
</body> 
</html> 

我該怎麼做,以便當我回顯$ code時,$ all會被渲染到裏面?

+1

http://php.net/manual/messageformatter.formatmessage.php – KingCrunch 2012-04-11 14:35:51

+0

你有一個標記能夠真正識別「正確的中間位置」是什麼? $ all實際上都在file.txt中,所以你知道從哪裏開始放置$ all的內容? – used2could 2012-04-11 14:37:53

回答

4

使用str_replace替換$all的值。

$code = str_replace('$all', $all, $code); 
+0

太簡單了,我很驚訝,我以前沒有想到它。它的工作原理與我現在想要的一樣,謝謝! – Student 2012-04-11 14:41:01

+0

很高興能提供幫助:-) – 2012-04-11 14:42:05

-1

嘗試使用RegEx。
你可以用'body'標籤+你的var替換'body'標籤。
像:

echo preg_replace('/<body>/',"<body>$all",$code); 

但你必須確保有且僅有一個<body>標籤存在於$code

+0

''和'$ all'之間有一些HTML代碼。 – 2012-04-11 14:40:03

+0

並且OP將在body標籤後面放置一些內容,而不是_add_ new'$ all'。但是,正則表達式甚至不是必需的。簡單的字符串替換完全一樣。 – KingCrunch 2012-04-11 14:50:55

0

OP得到了他的解決方案,但我認爲這是值得一提爲好。

如果您沒有在HTML文件中的佔位符,但你知道,你想具體的事情後插入$all,你可以做這樣的事情:

$all = ob_get_clean(); 
$code = file_get_contents("file.txt"); 
$after = "<input type=\"hidden\" value=\"something\" />"; 

$code = substr_replace($code, $all, strpos($code, $after)+strlen($after), 0); 

這將在$code找到$after ,移到它的末尾,然後插入$all

+0

很高興知道,謝謝! – Student 2012-04-11 15:06:15