HTML в переменную PHP (HTML вне кода PHP)

Я новичок в php и задаюсь вопросом, Могу ли я иметь что-то вроде этого:

<?php
 ...
 magicFunctionStart();
?>

<html>
   <head>...</head>
   <body>...</body>
</html>

<?php
 $variable = magicFunctionEnd();
 ...
?>

то, что я должен использовать прямо сейчас, это

<?php
 ...
 $variable = "<html><head>...</head><body>...</body></html>"
?>

что раздражает и не читается.

6 ответов


вы пробовали "буферизация вывода"?

<?php
 ...
 ob_start();
?>

<html>
   <head>...</head>
   <body>...<?php echo $another_variable ?></body>
</html>

<?php
 $variable = ob_get_clean();
 ...
?>

Я думаю, вы хотите heredoc синтаксис.

например:

$var = <<<HTML
<html>
   <head>
random crap here
</html>
HTML;

Я не совсем уверен в том, что вы пытаетесь выполнить, но я думаю, что-то вроде синтаксис heredoc может быть полезен для вас:

<?
$variable = <<< MYSTRING

<html>
   <head>...</head>
   <body>...</body>
</html>

MYSTRING;

однако, если вы пытаетесь сделать шаблоны HTML, я бы настоятельно рекомендовал вам получить настоящий механизм шаблонов, например умница, Dwoo или Савант.


Ok то, что вы хотите сделать, возможно в некотором роде.

вы не можете просто назначить блок HTML переменной php или сделать это с помощью функции. Однако есть несколько способов получить желаемый результат.

  1. исследуйте использование механизма шаблонов (я предлагаю вам сделать это, так как это стоит того). Я использую умница, но есть много других
  2. второй-использовать выходной буфер.

один из проблемы у вас есть, что любой HTML у вас на странице немедленно отправляется клиенту, что означает, что он не может быть использован в качестве переменной в php. Однако, если вы используете функции ob_start и ob_end_fush вы можете достичь того, чего хотите.

например

<?php 
  somesetupcode();
  ob_start();  ?>
<html>
<body>
html text
</body>
</html>
<?php
  //This will assign everything that has been output since call to ob_start to your    variable.
  $myHTML = ob_get_contents() ;
  ob_end_flush();

?>

надеюсь, это поможет вам прочитать на выходные буферы в документах php.


Я всегда рекомендую избежать функции буфера (например,ob_start или и т. д.), Когда у вас есть альтернатива (потому что иногда они могут конфликтовать с частями в одной системе).

я использую:

function Show_My_Html(){ ?> 
    <html>
      <head></head>
      <body>
         ...
      </body>
    </html>
    <?php 
}

//output anywhere
Show_My_Html();

его действительно сумасшедший, но имейте в виду, что если вы это сделаете:

<?php echo ""; ?>  

вы получите:

<html><head></head><body></body></html>  

сохраняйте спокойствие, его только php пытается свести вас с ума.