2011-07-27 7 views
1

可能性の重複:
Fastest way to replace string in PHPHTML内のカスタム変数を作成する方法

私は私の好きな私のhtmlタグの内側に作られたカスタム変数を管理しようとしていた。

<title>{myTitle}</title> 

今、PHPを使用してこれらのカスタム変数 "{...}"を置き換えることはできますか? 私はテンプレートエンジンのほとんどがそれを行うことができることを見た。

何かアドバイスが理解されるであろう:)

+1

テンプレートエンジンを使用してみませんか? – Tomalak

+0

Smartyアーキテクチャを研究します。あなたはそこにあなたの答えを得るでしょう。 –

+1

*(参考)* [文字列関数](http://php.net/manual/en/ref.strings.php) – Gordon

答えて

2

これはテンプレートエンジンの非常に単純なバージョンです。明らかに、あなたはより多くの機能を持つクラスにそれを配置する必要があります:)

表示ページが

<?php 

define(TEMPLATES_LOCATION, 'templates/'); 

function TemplateFunction ($template, $replaces) { 
    $template = file_get_contents(TEMPLATES_LOCATION . $template); 
    if (is_array($replaces)) { 
     foreach($replaces as $replacekey => $replacevalue){ 
      $template = str_replace('{$' . $replacekey . '}', $replacevalue, $template); 
     } 
    } 
    return $template; 
} 

$keys = array(
    'TITLE' => 'This is page title', 
    'HEADER' => 'This is some header' 
); 

echo TemplateFunction('body.tpl', $keys); 


?> 

(テンプレート/ body.tplに位置)テンプレートファイル

<html> 
<head> 
    <title>{$TITLE}</title> 
</head> 
<body> 
    <h1>{$HEADER}</h1> 
</body> 
</html> 

を(EDIT)シングルファイルバージョン

<?php 

define(TEMPLATES_LOCATION, ''); 

function TemplateFunction ($template, $replaces) { 
    // $template = file_get_contents(TEMPLATES_LOCATION . $template); 
    if (is_array($replaces)) { 
     foreach($replaces as $replacekey => $replacevalue){ 
      $template = str_replace('{$' . $replacekey . '}', $replacevalue, $template); 
     } 
    } 
    return $template; 
} 

$keys = array(
    'TITLE' => 'This is page title', 
    'HEADER' => 'This is some header' 
); 

$template = '<html> 
<head> 
    <title>{$TITLE}</title> 
</head> 
<body> 
    <h1>{$HEADER}</h1> 
</body> 
</html>'; 

echo TemplateFunction($template, $keys); 

?> 
+0

Kalleさん、ありがとうございます。でも、HTMLとPHPのコードが同じページになるようにしたいのですが? –

+0

問題ありません。これはどうですか?これを少し操作することはできますが、技術的には、TemplateFunctionを後で呼び出さなければなりません。他のものは全て把握され、設定されます。 –

1

あなたがTwigを使用することができるような構文を使用したい場合は、PHP用のテンプレートエンジンです。

+0

あなたの応答をありがとう、しかし私はそれを私の自己、エンジンを使用したくない –

+0

[str_replace](http://php.net/manual/en/function.str-replace.php)や[preg_replace](http://php.net /manual/en/function.preg-replace.php)。なぜあなたは車輪を再発明したいのですか? – Fabio

+0

私はあなたが非常に感謝、今私が直接 –

2

PHPはすでに基本的なテンプレート環境です。また、Smartyなどのツールを使用してより多くの機能を利用することもできます。

<title><?= $myTitle ?></title>

+0

ありがとう:)ことを学びたい、ただ好奇心が強いです私のPHPコードとHTMLを1ページにしたいのであれば、どうやって変数を置き換える前に表示されないようにすることができますか? –

2
$arr = new array(); 
$arr["test"] = "hello"; 
$arr["foo"] = "world" 

foreach ($arr as $key => $value) { 
    $yourTemplateAsString = str_replace("{".$key."}", $value, $yourTemplateAsString); 
} 

シンプルなソリューション...あなたが正規表現でいくつかの派手なものを行うと、このようにするforeachとかを追加することができます。しかし、PHP自体には、単に標準の変数を含めることができます。

+0

うん、私は上記のサンプル知っているPHPを使用せずに、HTML内でそれをしたい、それは私がそのようにやって何年だ、私は –

関連する問題