2012-02-16 14 views
3

たとえば、コードの断片があるとしましょう。これは別にしておきたいものです。今のところはsnippet.phpとなります。HTMLスニペットを別のファイルに保存し、必要に応じて変数をプラグインし、必要に応じてエコーアウトすることはできますか?

snippet.phpは、PHP変数を持つ再利用可能なHTMLの単純なブロックになります。このような何か:私はちょうどに文字列にHTMLを使用することができます知っている

function writeArticle($headline, $body){ 
    return "contents of snippet.php using the variables passed in to the function" 
} 

:私はこの線に沿って、関数から、このコードを返すことができるようにしたいと思い

<article> 
    <h1>{$headline}</h1> 
    <p>${$body}</p> 
</article> 

実際のスニペットはかなり複雑で、モジュール化したいと思っています。

+0

何信じられないほど役に立たないコメントをsnippet.php。ありがとうございました。 –

+0

それはあなたがやろうとしていることなのですが、それ以上のことはできません。 –

+0

それがポイントであっても、それは全く役に立たない。現在利用可能なこれらの「非常に多くのテンプレートエンジン」の少なくとも1つを*命名することができます。 –

答えて

1

一つの方法は、のfile_get_contentsとstr_replaceを使用している

HTML:

<article> 
    <h1>[-HEADLINE-]</h1> 
    <p>[-BODY-]</p> 
</article> 

PHP:

function writeArticle($headline,$body){ 
     $content = file_get_contents("[add your html directory here]/file.html",true); 
     $content = str_replace("[-HEADLINE-]",$headline,$content); 
     $content = str_replace("[-BODY-]",$body,$content); 

     echo $content; 
} 
+0

これはまさに私がやりたがっているようです。ありがとうございました。 –

+0

ようこそ!この問題のお手伝いをしてうれしい – denil

0

あなたはこれを行うことができます:

HTML DOCUMENT 
Include('blockClass.php'); 
$block = new blockClass(); 
echo $bl = $block->block($headline, $body);  

CLASS DOCUMENT 
class blockClass{ 

    function block($headline, $body){ 

     $var ='<article> 
       <h1>' . $headline . '</h1> 
       <p>' . $body . '</p> 
      </article>'; 
     return $var; 
    } 
} 
1

あなたは、出力バッファリングを使用することができますincl PHP変数が評価されるようにファイルを調べてください。しかし、<?php PHPタグを使用していないので、 > HEREDOC形式(http://php.net/manual/en/language.types.string.php)でラップする必要があります。ページ上のHeredocまでスクロールします。

$output = <<<HEREDOC 
<article> 
    <h1>{$headline}</h1> 
    <p>{$body}</p> 
</article> 
HEREDOC; 

function writeArticle($headline, $body){ 
    ob_start(); 
    include('snippet.php'); 
    $snippet = ob_get_clean(); 
    return $snippet 
} 
関連する問題