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


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

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

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

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

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

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

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

Author: GraphicsMuncher, 2009-10-17

6 answers

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

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

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

<?php
 $variable = ob_get_clean();
 ...
?>
 66
Author: Wabbitseason, 2009-10-17 06:58:24

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

Например:

$var = <<<HTML
<html>
   <head>
random crap here
</html>
HTML;
 14
Author: eplawless, 2009-10-17 06:52:36

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

<?
$variable = <<< MYSTRING

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

MYSTRING;

Однако, если вы пытаетесь создавать HTML-шаблоны, я бы настоятельно рекомендовал вам приобрести настоящий движок шаблонов, такой как Smarty, Dwoo или Ученый.

 4
Author: CMS, 2009-10-17 06:51:02

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

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

  1. Исследуйте использование механизма шаблонов (я предлагаю вам сделать это, так как в любом случае это того стоит). Я использую smarty, но есть много других
  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.

 1
Author: Toby Allen, 2014-02-17 11:40:47

Я всегда рекомендую ИЗБЕГАТЬ буферных функций (таких как ob_start , или и т.д.) Всякий раз, когда у вас есть альтернатива (потому что иногда они могут конфликтовать с частями в одной и той же системе).

Я использую:

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

//output anywhere
Show_My_Html();
 0
Author: T.Todua, 2018-09-15 16:19:09

Это ДЕЙСТВИТЕЛЬНО БЕЗУМИЕ, но имейте в виду, что если вы это сделаете:

<?php echo ""; ?>  

Вы получите это:

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

Сохраняй спокойствие, это единственная попытка php свести тебя с ума.

 -8
Author: gfsd4gs56g14sd56, 2013-08-30 22:57:55