PHP - может ли длинная строка HTML быть обернута в переменную PHP? - PullRequest
2 голосов
/ 16 сентября 2010

Можно ли это сделать - открыть переменную с одним тегом PHP, затем закрыть тег PHP, но оставить переменную открытой, чтобы все, что ниже, стало значением переменной?Или есть ограничение на размер / символы переменной PHP?

<?php $content = " ?>

a bunch of content goes here <br />
with lots of HTML tags and JS scripts

<?php "; ?>

Ответы [ 7 ]

7 голосов
/ 16 сентября 2010

Вы можете использовать HEREDOC / NOWDOC

$content = <<< 'HTML'

a bunch of content goes here <br />
with lots of HTML tags and JS scripts

HTML;

или буферизация вывода , например,

<?php ob_start(); ?>

foo

<?php
    $var = ob_get_clean();
    var_dump($var); // will contain foo and surrounding whitespace
6 голосов
/ 16 сентября 2010

Нет, но вы, вероятно, можете сделать это с помощью heredoc

$content = <<< END
some content here<br/>
<script type="text/javascript">
alert('hi');
</script>

END;
4 голосов
/ 16 сентября 2010

Что бы ваш код сделал, это сохранить строку, начинающуюся с ?> и заканчивающуюся <?php в переменной $content.Это, вероятно, не то, что вы хотите сделать?Если вы позже откроете такую ​​строку, вы, скорее всего, получите ошибки из-за этих php-тегов.

Как упоминалось в других ответах, heredoc будет решением, но в целом вы должны стараться избегать таких ситуаций, когда у вас естьхранить очень длинные HTML-последовательности в переменной.Вместо этого используйте файл представления и вставьте туда динамический контент или используйте какое-то включение.

Итак, в зависимости от того, что вы действительно хотите сделать, вы можете выбрать следующие варианты:

  1. heredoc
  2. $content = "<html>markup here</html>";
  3. через буферизацию вывода
  4. с использованием представления (ищите информацию о шаблоне MVC, вы также можете просто сделать VC для начала)
  5. Использование включает в себя
3 голосов
/ 16 сентября 2010
1 голос
/ 16 сентября 2010

$content = 'large amount of text'; или же $content = 'text';<br/> $content .= 'other text';<br/> $content .= 'end text';

0 голосов
/ 16 сентября 2010

Да, вы можете сделать это.

Закрывающий тег внутри двойных кавычек как: " ?>" не будет обрабатываться специально. Это просто строковое содержимое.

есть ли ограничение на размер / символы переменной PHP?

Нет. Вы можете заполнить переменную как можно больше, пока ваша память не заполнится.

0 голосов
/ 16 сентября 2010

попробовать:

<?php ob_start (); ?>

.... html

<? 
$content = ob_get_clean (); 
?>

Подробнее см. http://pl.php.net/manual/en/book.outcontrol.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...