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 answers
Вы пробовали "буферизацию вывода"?
<?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-шаблоны, я бы настоятельно рекомендовал вам приобрести настоящий движок шаблонов, такой как Smarty, Dwoo или Ученый.
Хорошо, то, что вы хотите сделать, возможно в некотором роде.
Вы не можете просто назначить блок HTML переменной php или сделать это с помощью функции. Однако есть несколько способов получить желаемый результат.
- Исследуйте использование механизма шаблонов (я предлагаю вам сделать это, так как в любом случае это того стоит). Я использую smarty, но есть много других
- Второй - использовать выходной буфер.
Одна из ваших проблем заключается в том, что любая 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 свести тебя с ума.