Как сохранить фрагмент HTML в отдельном файле, подключить переменные по мере необходимости и выводить их по требованию? - PullRequest
3 голосов
/ 16 февраля 2012

Например, допустим, у меня есть фрагмент кода, который я хотел бы сохранить отдельно.сейчас мы назовем его 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в возвращаемой строке, но фактический фрагмент будет довольно сложным, и я хочу, чтобы он был модульным.

Ответы [ 3 ]

1 голос
/ 16 февраля 2012

Один метод использует 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;
 }
1 голос
/ 16 февраля 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
 }
0 голосов
/ 16 февраля 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;
    }
}
...