2011-12-31 11 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

のこの

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

を使用します$ '、 "John Doe"、$ body); '二重引用符と一重引用符の違いに注意してください。 – Virendra

+0

私はあなたのテンプレートの変数のものに '{{}}'を使うことをお勧めします。そうすれば、PHP変数との混乱/衝突がないことが確かです。 – PeeHaa

+0

提案していただきありがとうございます。テンプレートは実際にはいくつかのpythonコードのために作られていて、私はそれらを制御することはできませんので、私はちょうどそこにあるものと動作するようにしようとしていました。 – user1124632

答えて

5

単一引用符で試してみてください:

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

そう$兆候はPHP(PHPだけではecho $$USER_NAME."$$"または類似のものとしてそれを解釈することを理解することがecho "$$USER_NAME$$"をしようとする)によって解釈されます。

それでも、二重引用符を使用する場合は、同様$をエスケープすることにより、問題を解決することができます

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

を単一との違いは、二重引用しとを引用しているかを知るためにPHP manual page on StringsをチェックPHPの文字列

+0

今私は本当に馬鹿だと感じます。私はこれを数時間苦労してきました。そして、$記号を解釈するPHPについては決して考えませんでした。私に知らせてくれてありがとう! – user1124632

2

あなたの文字列 "$$ USER_NAME $$" はドル記号をエスケープする必要があります。 "\ $ \ $ USER_NAME \ $ \ $" または単一引用符を使用

2

この

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

をお試しください注意二重引用符と一重引用符の違い。 PHPが二重引用符を見たときには、その変数の値を変数として解析しようとします。置換文字列は$$USER_NAME$$なので、PHP変数を探してみてください。

置換文字列の名前を__USER_NAME__のように変更することができます。これは混乱を防ぎます。ここで

はあなたがダブルquotes.Whichで$$ USERNAMEは$$ PHPエンジンは、単一引用符でvariable.Giveとしてそれをそれを解釈することができますし、あなたが与えている私はPHP double quotes vs single quotes

1

に書かれている記事です行くつもりです。

1

他の人が一重引用符を指摘しているのはおそらくあなたの問題です。あなたは1つのライナーとしてあなたのコードを書き換えることができる必要があります:

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

+1は 'fxxx()'のものを 'file_get_contents()'で置き換えることができますが、現在は解析エラーがあります:) –

1

は、この `$本体= str_replace( '$$ USER_NAME $を試してみてください代わりに

$body = str_replace("$$USER_NAME$$", "John Doe", $body); 
関連する問題