2016-09-28 12 views
0

変数に置き換える特別な文字列を持つhtmlスキーマページを格納することができ、それを行う方法があれば、私は迷っていました。外部ファイルに文字列を置換して外部ページからhtmlを印刷することはできますか?

、私は、製品のHTML構造を入れたいのはschema.phpそれを呼び出す聞かせ:

<span id="{% id %}">{%= name %}</span> 
<span>{%= imageURL() %}</span> 

上記の例は単なるシンプルな例です。外部ファイルでは、htmlはより複雑になります。私はちょうど少数のラインがあったら私はちょうど単純な機能でそれらをエコーすることができることを知っているが、これは事実ではない。別のファイルで

私は製品を扱うクラスを持っている、のはclass.phpそれを呼びましょう:

このクラスで
class Product { 
    //logic that is useless to post here. 

    public function imageURL() { 
     return "/some/url".$this->id."jpg"; 
    } 
} 

私はschema.phpからコンテンツを取る機能を追加したいとして、公共の場でそれをエコーうユーザーのためのファイル。

私はfile_get_contents()file_put_contents()と試みたが、それだけでは動作しません:

$path_to_file = 'data/prodotti/scheda.inc'; 
$file_contents = file_get_contents($path_to_file); 

$file_contents = str_replace(
    "{%= ", 
    "<?php echo $this->", 
    $file_contents 
); 

$file_contents = str_replace(
    " }", 
    "; ?>", 
    $file_contents 
); 

file_put_contents($path_to_file, $file_contents); 

はそれがschema.phpページを呼び出し、カスタム変数でそれを印刷することが可能でしょうか?

+0

'DOMDocument'があなたの最善の策かもしれません。 – PHPglue

+0

PHPテンプレートライブラリのためのGoogle – Barmar

+0

あなたが持っているものはうまくいくはずです。 '$ file_contents = str_replace( ") "の代わりに' $ file_contents = str_replace( "%}"、あなたのサンプルデータを与えてください) – developerwjk

答えて

0

私はあなたが "テンプレート"とはいを意味すると思いますが、それを行う最良の方法は、Smartyのような既存のテンプレートエンジン、またはhttps://github.com/bobthecow/mustache.phpのようなMustacheの実装を使用することです。 XSS、HTMLインジェクションのリスク、そして最終的にはループや条件文などの機能をどのようにしたいのかについて説明します。

+0

私は口髭はコンポーザーに同梱されているので、私はサーバに何もインストールできませんが、別のテンプレートを覚えたくありませんでした。 – dcdeiv

0

php require funcで正常に実行できます。交換する任意の文字列をなし、あなたはちょうどその "テンプレート" として、そのファイルを使用する場合:schema.phpで

Class.phpとで

<?php 
echo'<span id="'.$id.'">'.$name.'</span> 
<span>'.$imageURL.'</span>'; 
?> 

<?php 
class Product { 
//logic that is useless to post here. 

public function imageURL() { 
    return "/some/url".$this->id."jpg"; 
} 
} 
$imageURL = imageURL(); ?> 

index.phpまたはclass.phpとtemp.php(スキーマ)を扱うメインページ

<?php 
//avoid undefined variables on errors 
//in case that you don't check for values submitted 
$id = 0; 
$name = 0; 
$imageURL = ''; 

//set vars values 
$id = /*something*/; 
$name = /*something 2*/; 
$imageURL = /*something3*/; 
//all date will be replaced is ready, oky nothing to wait for 
require('path/to/schema.php'); 

注:これらのデータをユーザーから取得する場合は、if(isset())で検証する必要があります。

希望、

+0

@dcdeivあなたが望むものでなければ、私は誤解してしまいます。もっと明確にしてください。 – xYuri

関連する問題