2016-11-14 12 views
1

ウェブサイト全体をHTMLとPHPで記述しましたが、少し問題がありました。ウェブサイトをほぼ完成させた後、HTMLだけでなくすべてのコンテンツをデータベースに入れるように言われました。私がやっているように、私はインラインPHP変数を持つテキストがデータベースから取り出されたときに読み込まれないことに気付きました。PHP - 文字列として格納された変数を印刷する

オリジナルコード:

<div>Hello <?php echo $World; ?></div> 

新しいコード:

<div><?php getContent("title"); ?></div> 

私はデータベースに格納する二つの方法試してみました:
まず方法、テキスト保存:Hello <?php echo $World; ?>
出力しますHelloであり、変数を無視します。

第二の方法、テキスト保存:Hello $Worldの代わりに、私が試した$World

他のものの値が出力しHello $World

Hello $$WorldからHello $$World
Hello {$World} - Hello {$World}について読む

+1

だから、データベースから取得したすべてのテキストは、変数の存在をチェックすべきだと思いますか?本当に? –

+2

Smartyのようなテンプレートパッケージを調べたり、プレースホルダを使用したり、str_replaceを使って置き換えることができます。かなり悪質な 'eval'もあなたを助けるかもしれませんが、私はそれを確認することはできません。 – aynber

+6

omg、 'eval'を使わないでください! – cmorrissey

答えて

1

テキストにプレースホルダを使用してから、str_replaceを使用してプレースホルダを変数に置き換えることができます。

DB文字列:

<div>Hello WORLD_VAR</div> 

、コードで:

$text = str_replace('WORLD_VAR', $World, $text); 
1

は、 sprintf

echo sprintf("Hello %s",$World);

このデータベースに"Hello %s"を保存し、$World を使用してください。

正しい方法で実装すれば、ウェブサイトをさまざまな言語で表示することができます。

しかし、私はあなたがより多くのPHPでテンプレートに入る必要があります、そして/またはPHP用のテンプレートエンジンを使用します。

http://php.net/manual/de/function.sprintf.php

https://de.wikipedia.org/wiki/Template-Engine#Template-Engines_f.C3.BCr_PHP

、コメント内のノートの後

ザ・は多くのです!方法は phpこれを行う Hello <?php echo $World; ?> しかし、最終的には、データベースに実際のデータを格納します。 PHPコードやHTMLは単なるプレーンなデータではありません。そのうちの1つは、Hello %sのようなテンプレートや、ユーザー名などのその他の動的データです。また、テンプレートエンジンを使用すると、適切な方法でそのすべてを実行できます。 (テンプレートはファイルベースで、ほとんどは )。

+1

しかし、他の変数はどうですか?彼はすべてのPHPコンテンツをデータベースに保存したいと考えています。 – Barmar

+0

Sry、私は「ポスト」に2回ヒットし、本当に終了しなかった。 :) – JOUM

+0

これはうれしいことですが、問題は、プログラミング経験のない誰かが自分の変数を追加したり、既存のものをデータベースで変更したりすることができなくなったときに、htmlファイルにアクセスする必要があるということです。サイトを危険にさらす危険性があります。 – Cody

関連する問題