Конструкция <<<HERE HERE; и вывод кода HTML в PHP


    Сегодня на примере программы обработчика для урока  Флажки checkbox и свойства таблицы colspan и rowspan  я рассмотрю так называемый механизм цитирования, который позволяет помещать в код PHP многострочный текст.
    Довольно часто требуется вывести сразу несколько строк HTML кода, и может оказаться утомительным обрамлять каждую строку кавычками (особенно потому, что в HTML они тоже не редко используются).
     В языке PHP существует специальный механизм цитирования, который идеально подходит в данной ситуации - конструкция <<<HERE   HERE;
     Фрагмент <<<HERE показывает, что после него идет текст, занимающий несолько строк и заканчивающийся символом HERE;
     Вы можете использовать вместо HERE любую фразу на свое усмотрение. Между <<<HERE HERE; можно поместить столько текста сколько вам необходимо.
     Вы можете размещать в этом тексте переменные, и PHP запишет вместо них соответствующие значения, точно так же как сделал бы это в обычной строке заключенной в кавычки.
    Можете свободно использовать одинарные и двойные кавычки( " ' ).
    Фраза - окончание (в данном случае HERE;) должна занимать отдельную строку, и перед ней не должно быть пробелов.
     С технической точки зрения, все, что расположено между строкой <<<HERE и закрывающей конструкцией HERE; является частью одной логической строки, даже если этот код занимает в редакторе несколько строк.
     Обратите внимание на код PHP. C помощью этого небольшого отрывка кода, который выводит на экран таблицу, я продемонстрирую вам механизм работы конструкции <<<HERE HERE;

    Сначала с помощью конструкции <<<HERE HERE; я присваиваю переменной $tr2 HTML код отвечающий за вывод второй строки таблицы:
<?php
$tr2 = <<<HERE
  </td>
</tr>
 <tr>
  <td height='50' width='100' bgcolor='#336699' valign='bottom'> <center>2x1</center>
  </td>
  <td width='100' bgcolor='#FFCC33'> <center>2x2</center>
  </td>
  <td width='100' bgcolor='#336699' valign='bottom'> <center>2x3</center> </td>
  </td>
 </tr>
</table>
HERE;

    А затем с помощью оператора print и конструкции <<<HERE HERE; я вывожу саму таблицу.
Обратите внимание, что в данном отрывке кода внутри конструкции <<<HERE HERE; присутствует переменная $tr2 определенная ранее.
print <<<HERE
<table>
<tr>
    <td height="50" width="100" bgcolor="#FFCC33" valign="top" > <center>1x1</center>
    </td>
    <td width="100" bgcolor="#336699"> <center>1x2</center>
     </td>
<td width="100" bgcolor="#FFCC33" valign="top"> <center>1x3</center>
$tr2
HERE;
?>

Автор: Сергей Зарубин

Дата: 2011-04-23

Колличество просмотров: 24860

Нравится

Комментарии к заметке:

Комментарий добавил(а): r@zor
Дата: 2012-04-01

Спс за урок

Комментарий добавил(а): Арисон
Дата: 2012-06-19

а у меня не работает ( Parse error: syntax error, unexpected T_START_HEREDOC )что делать

Комментарий добавил(а): Сергей Зарубин
Дата: 2012-06-19

Обратите внимание на фразу: окончание (в данном случае HERE;) должна занимать отдельную строку, и перед ней не должно быть пробелов.

Комментарий добавил(а): троль
Дата: 2013-02-19

кал, не очень помогло

Комментарий добавил(а): Антон
Дата: 2013-03-21

Спасибо! Помогло :). Я только-только начал изучать PHP (сижу в тюрьме, возможностей не очень много) и этот сайт -- удачная находка. Всё рассказывается без "понтов", понятно. Спасибо.

Комментарий добавил(а): сергей
Дата: 2013-06-06

не используйте анахронизмы (<<<HERE HERE), избавьте себя и других людей от говнокода

Комментарий добавил(а): Сергей Зарубин
Дата: 2013-06-07

Как же достали эти гении от программирования.
Чем делать подобные программные заявления вы бы лучше зашли на http://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.heredoc
почитали бы.
Может узнали бы для себя что нибудь новое.

Комментарий добавил(а): shako
Дата: 2013-06-24

Iasno no mojem li mi zanesti vnutri print <<<HERE HERE; php code?, naprimer vnutri print <<<HERE
kakoi to do {}
while(); // do while loop????
HERE; a takoe vajmojno ili net?
jdu atveta :))) spasibo..

Комментарий добавил(а): Сергей Зарубин
Дата: 2013-06-25

Shako , если отвечать о всеx возможностях HEREDOC и NOWDOC это тема для отдельной большой статьи.
Я бы все же порекомендовал вам обратится к первоисточнику - сайту php.net
Там все очень подробно и с примерами написано.

Комментарий добавил(а): shako
Дата: 2013-06-25

spasibo vam ...

Комментарий добавил(а): Александр
Дата: 2014-12-17

Жаль, что в нотпад++ между <<<HERE и HERE не подсвечивается HTML ((( Уж лучше пхп открывать и закрывать: {?php b ?}

Комментарий добавил(а): asd
Дата: 2014-12-17

Tank you!

Комментарий добавил(а): Никола
Дата: 2015-01-14

Спасибо большое, избавили от нужды выискивать эту инфо из общего кода, где этой теме обычно уделяют пару строк из основного кода. И чтобы понять это (here) мне бы пришлось вникать сначала в основной код.

Комментарий добавил(а): Дулат
Дата: 2015-03-31

Спасибо большое!

Комментарий добавил(а): Анатолий
Дата: 2015-06-09

<?php
if (!isset($id)){
$result = mysql_query("SELECT title,id FROM instrumentariy");
$myrow = mysql_fetch_array ($result);

do{
printf ("<p><a href='edit_in.php?id=%s'>%s</a></p>",$myrow["id"], $myrow["title"]);
}
while($myrow = mysql_fetch_array ($result));
}
else{

$result = mysql_query("SELECT * FROM instrumentariy WHERE id=$id");
$myrow = mysql_fetch_array ($result);

print <<<HERE
<form name="form1" method="post" action="update_in.php">
<table width="1001" height="81" border="0" cellpadding="5px" cellspacing="5px">
<tr>
<td width="457">
<p><label>
Введите название новой записи<br>
<input name="title" type="text" id="title" size="60"><br><br>
Введите краткое описание новой записи<br>
<input name="meta_d" type="text" id="meta_d" size="60"><br><br>
Введите ключевые слова для новой записи<br>
<input name="meta_k" type="text" id="meta_k" size="60"><br><br>
Введите дату добавления новой записи<br>
<input name="date" type="text" id="date" value="гггг-мм-дд"><br><br>
Введите краткое описание записи с тегами абзацев<br>
<textarea name="description" id="description" cols="60" rows="5"></textarea>
</label></p>
<p><label>
Введите автора добавления новой записи<br>
<input name="author" type="text" id="author" size="60">
</label></p>
<p><label>
Введите название подраздела записи<br>
<input name="name" type="text" id="name" size="60">
</label></p>
</td>
<td width="528">
<label><p>
Введите весь текст новой записи с тегами абзацев<br>
<textarea name="text" id="text" cols="60" rows="26"></textarea><br>
<input type="submit" name="submit" id="submit" value="Занести новую запись в базу">
</p></label>
</td>
</tr>
</table>
</form>

HERE;
}
?>

Комментарий добавил(а): Анатолий
Дата: 2015-06-09

Помогите пож, код вроде правильный а когда доходит до print <<<HERE то он тупо не хочет показывать форму. Заранее спс

Комментарий добавил(а): Андрей
Дата: 2015-09-26

Анатолий, у меня таже самая проблема, тоже по этому курсу от Евгения Попова) Не хочет форма показываться и все тут... Что же делать(((

Комментарий добавил(а): WomAnizeR
Дата: 2015-11-20

if (!isset($id)) заменить на if(!isset($_GET['id']))
поскольку значение id должно браться из ссылки на редактирование. А в первом случае используется переменная $id, которая до этого нигде не объявлена.

Комментарий добавил(а): nElenaSn
Дата: 2017-06-07

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > http://oplata-vklike.tk/ <

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

Комментарий добавил(а): pegorSn
Дата: 2017-06-07

Уникальный сервис помощи получения кредита от частного инвестора, а так же кредитных организаций. Подходит как компаниям, так и частным лицам.

Займ от частного инвестора.

Наша компания помогает встретиться инвестору и заёмщику.

Прямой контакт с инвестором
Любая кредитная история
Нужен только паспорт
Работаем с частными лицами и фирмами
Любой регион
Сумма от 5,000 до 50,000,000 руб
Процент одобрения 97%

Преимущества:

- Без залога и поручительства!
- Ставка - всего от 1% в месяц!
- Без скрытых платежей и комиссий!

Оформите заявку у нас на сайте. > www.ch-investor.tk <



Добавить новый комментарий


Введите число с картинки:

captcha