2011-12-31 67 views
2

我無法讀取文件並將其用作PHP中的模板。我的代碼的一部分被粘貼在下面。由於某種原因,它永遠不會在字符串中找到$$ USER_NAME $$,所以它永遠不會替換。我也在下面粘貼了我的模板的開始部分。使用HTML模板的PHP

$filename = "email/templates/welcome.txt"; 
$file = fopen($filename, "r") 
$body = fread($file, filesize($filename)); 
fclose($file); 
$body = str_replace("$$USER_NAME$$", "John Doe", $body); 
print($body); 

模板:

<p> 
    <img src="emailPic" alt="Logo" /> 
</p> 
<p>Dear $$USER_NAME$$,</p> 
<p>Thank you for registering to attend $$EVENT_NAME$$. We look forward to helping you reach your networking goals at $$EVENT_SHORT_NAME$$. 
</p>... 

爲什麼會找不到模板$$ USER_NAME $$任何想法?

+5

試試這個'$ =身體str_replace函數('$$ USER_NAME $ $',「John Doe」,$ body);'注意雙引號和單引號的區別。 – Virendra 2011-12-31 19:37:44

+0

我會建議在你的模板中使用'{{}}「來表示變量。這樣你就可以確定從來沒有與PHP變量混淆/碰撞。 – PeeHaa 2011-12-31 19:38:36

+0

感謝您的建議。這些模板實際上是爲一些python代碼編寫的,我無法控制它們,所以我只是試圖讓它與已有的代碼一起工作 – user1124632 2012-01-01 01:12:58

回答

5

嘗試用單引號:

$body = str_replace('$$USER_NAME$$', 'John Doe', $body); 

否則$跡象得到由PHP解釋(只是試着做echo "$$USER_NAME$$"明白,PHP將它解釋爲echo $$USER_NAME."$$"或類似的東西)。

您可以通過逃避$以及解決的問題,如果你仍然想使用雙引號:

$body = str_replace("\$\$USER_NAME\$\$", "John Doe", $body); 

檢查PHP manual page on Strings知道是什麼之間的差異單引號雙引號 PHP中的字符串。

+0

我現在覺得很愚蠢。我一直在掙扎幾個小時,我從來沒有想過PHP解釋$符號。謝謝你讓我知道! – user1124632 2012-01-01 01:12:12

2

你的字符串 「$$ USER_NAME $$」 需要逃避的美元符號: 「\ $ \ $用戶名\ $ \ $」 或者使用單引號

2

試試這個

$body = str_replace('$$USER_NAME$$', "John Doe", $body); 

注意雙引號和單引號的區別。當PHP看到雙引號時,它會嘗試將其中的值解析爲變量,並且由於替換字符串是$$USER_NAME$$,所以您試圖找到PHP變量。

您可以將替換字符串重命名爲__USER_NAME__。這將防止混淆。

這裏是我寫上PHP double quotes vs single quotes

1

你給雙quotes.Which的$$ USERNAME $$的文章使PHP引擎來解釋它作爲一個variable.Give它在單引號和你急於去。

1

正如其他人指出,單引號可能是你的問題。你應該能夠改寫你的代碼作爲一個班輪:使用

echo str_replace('$$USER_NAME$$', 'John Doe', file_get_contents('email/templates/welcome.txt')); 
+0

+1指出''fxxx()'東西可以用'file_get_contents()'替換,但是目前存在解析錯誤:) – 2011-12-31 19:59:07

1

$body = str_replace('$$USER_NAME$$', "John Doe", $body); 

代替

$body = str_replace("$$USER_NAME$$", "John Doe", $body);