Изолирование от HTML

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


<p>Это будет проигнорировано PHP и отображено браузером.</p>
<?php echo 'А это будет обработано.'; ?>
<p>Это тоже будет проигнорировано PHP и отображено браузером.</p>

 

Это работает так, как и ожидается, потому что когда интерпретатор PHP встречает закрывающие теги ?>, он просто начинает выводить все что найдет (за исключением сразу следующего символа перевода строки - смотрите раздел разделение инструкций) пока не встретит другой открывающий тег за исключением случая с содержащимся внутри кода условным оператором, в котором интерпретатор определяет результат условия перед принятием решения что пропустить. Ознакомьтесь со следующим примером.

Использование структур с условиями

Пример #1 Продвинутое изолирование с использованием условий


<?php if ($expression == true) { ?>
  Это будет отображено, если выражение истинно.
<?php } else { ?>
  В ином случае будет отображено это.
<?php } ?>

 

В этом примере PHP пропускает блоки, где условие не соблюдается. Даже несмотря на то, что они находятся вне пары открывающих/закрывающих тегов, PHP пропустит их в соответствии с условием, так как интерпретатор PHP будет перепрыгивать через блоки, содержащиеся внутри условия, которое не соблюдается.

При выводе больших блоков текста выход из режима синтаксического разбора PHP обычно более эффективен, чем отправка текста с помощью функций echo или print.

В PHP 5, существует до пяти различных пар тегов, которые могут быть использованы для обозначения PHP-кода, в зависимости от того, как был сконфигурирован PHP. Из них только две <?php ?> и <script language="php"> </script> доступны всегда. Также, начиная с PHP 5.4.0, третьей, доступной всегда, парой тегов является <?= ?>.

Другими двумя являются короткие теги и теги в стиле ASP, которые могут быть включены или выключены в конфигурационном файле php.ini. Хотя короткие теги и теги в стиле ASP могут быть удобны, они не так переносимы, как длинные версии, и поэтому не рекомендуются.

Пример #2 Открывающие и закрывающие теги PHP


1.  <?php echo 'если вы хотите хранить код PHP в документах XHTML или XML,
                то используйте эти теги'; ?>

2. Вы можете использовать короткий 'echo'-тег чтобы <?= 'напечатать эту строку' ?>.
    Он всегда разрешен начиная с PHP 5.4.0. Этот тег эквивалентен такому коду
    <?php echo 'напечатать эту строку' ?>.

3.  <? echo 'этот код с короткими тегами, но он будет работать только если '.
                'включена опция "short_open_tag"'; ?>

4.  <script language="php">
        echo 'некоторые редакторы (например, FrontPage) не
              любят инструкции обработки с этими тегами';
    </script>
    Поддержка такого синтаксиса удалена в PHP 7.0.0.

5.  <% echo 'Также вы можете использовать теги в ASP стиле'; %>
    Код с такими тегами <%= $variable; %> является сокращением от <% echo $variable; %>
    Поддержка обоих этих синтаксисов удалена в PHP 7.0.0.

 

Короткие теги (третий пример) доступны, только когда они включены с помощью директивы short_open_tag в конфигурационном файле php.ini, либо если PHP был скомпилирован с опцией --enable-short-tags .

ASP-теги (пятый пример) доступны, только когда они включены с помощью директивы asp_tags в конфигурационном файле php.ini. В PHP 7.0.0 их поддержка удалена.