Как мога да запазя HTML фрагмент в отделен файл, да добавя променливи, ако е необходимо, и да го извеждам ехо при поискване?

Например, да кажем, че имам кодов фрагмент, който бих искал да запазя отделно. засега ще го наречем snippet.php.

snippet.php ще бъде прост блок от многократно използваем HTML, който ще има php променливи в него. Нещо като това:

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

Бих искал да мога да върна този код от функция по следния начин:

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

Знам, че мога просто да използвам html в низ за връщане, но действителният фрагмент би бил доста сложен и искам да е модулен.


person Chris Sobolewski    schedule 16.02.2012    source източник
comment
Какъв невероятно безполезен коментар. Благодаря ти.   -  person Chris Sobolewski    schedule 16.02.2012
comment
точно това, което се опитвате да направите, не може да бъде по-точно.   -  person    schedule 16.02.2012
comment
Дори и да е на място, това е напълно безполезно. Бихте могли поне да именувате една от тези много машини за шаблони, които са налични в момента.   -  person Chris Sobolewski    schedule 16.02.2012


Отговори (3)


Един от методите е използването на 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;
 }
person denil    schedule 16.02.2012
comment
Това изглежда точно това, което бих искал да направя. Благодаря ти. - person Chris Sobolewski; 16.02.2012
comment
Добре дошли! Радвам се да ви помогна с този проблем - person denil; 16.02.2012

Можете да използвате буфериране на изхода и да включите файла, така че PHP променливите да бъдат оценени. Въпреки това, тъй като не използвате ‹?php PHP тагове ?› ще трябва да го обвиете във формат HEREDOC (http://php.net/manual/en/language.types.string.php). Превъртете надолу до Heredoc на страницата.

snippet.php

$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
 }
person Brent Baisley    schedule 16.02.2012

Можете да направите това:

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;
    }
}
person AgnosticDev    schedule 16.02.2012