Основы синтаксиса Теги PHP Когда PHP обрабатывает файл, он ищет открывающие и закрывающие теги, такие как <?php и ?>, которые указывают PHP, когда начинать и заканчивать обработку кода между ними. Подобный способ обработки позволяет PHP внедряться во все виды различных документов, так как всё, что находится вне пары открывающих и закрывающих тегов, будет проигнорировано парсером PHP. PHP включает в себя короткий echo-тег <?=, который является сокращением для более многословного <?php echo. PHP также допускает короткий открывающий тег <?, однако использовать их нежелательно, так как они доступны только если включены с помощью конфигурационной директивы &php.ini; short_open_tag, либо если PHP был сконфигурирован с опцией . Если файл содержит только код PHP, предпочтительно опустить закрывающий тег в конце файла. Это помогает избежать добавления случайных символов пробела или перевода строки после закрывающего тега PHP, которые могут послужить причиной нежелательных эффектов, так как PHP начинает выводить данные в буфер при отсутствии намерения у программиста выводить какие-либо данные в этой точке скрипта. &reftitle.changelog; &Version; &Description; 7.0.0 ASP-теги <%, %>, <%=, и теги скриптов <script language="php"> удалены из PHP. 5.4.0 Тег <?= доступен всегда, вне зависимости от настройки short_open_tag.
Изолирование от HTML Все, что находится вне пары открывающегося и закрывающегося тегов, игнорируется интерпретатором PHP, у которого есть возможность обрабатывать файлы со смешанным содержимым. Это позволяет PHP-коду быть встроенным в документы HTML, к примеру, для создания шаблонов. Это будет проигнорировано PHP и отображено браузером.

Это тоже будет проигнорировано PHP и отображено браузером.

]]>
Это работает так, как и ожидается, потому что когда интерпретатор PHP встречает закрывающие теги ?>, он просто начинает выводить все что найдет (за исключением сразу следующего символа перевода строки - смотрите раздел разделение инструкций) пока не встретит другой открывающий тег за исключением случая с содержащимся внутри кода условным оператором, в котором интерпретатор определяет результат условия перед принятием решения что пропустить. Ознакомьтесь со следующим примером.
Использование структур с условиями Продвинутое изолирование с использованием условий Это будет отображено, если выражение истинно. В ином случае будет отображено это. ]]> В этом примере PHP пропускает блоки, где условие не соблюдается. Даже несмотря на то, что они находятся вне пары открывающих/закрывающих тегов, PHP пропустит их в соответствии с условием, так как интерпретатор PHP будет перепрыгивать через блоки, содержащиеся внутри условия, которое не соблюдается. При выводе больших блоков текста выход из режима синтаксического разбора PHP обычно более эффективен, чем отправка текста с помощью функций echo или print. В PHP 5, существует до пяти различных пар тегов, которые могут быть использованы для обозначения PHP-кода, в зависимости от того, как был сконфигурирован PHP. Из них только две <?php ?> и <script language="php"> </script> доступны всегда. Также, начиная с PHP 5.4.0, третьей, доступной всегда, парой тегов является <?= ?>. Другими двумя являются короткие теги и теги в стиле ASP, которые могут быть включены или выключены в конфигурационном файле &php.ini;. Хотя короткие теги и теги в стиле ASP могут быть удобны, они не так переносимы, как длинные версии, и поэтому не рекомендуются. Кроме того, если вы намереваетесь вставлять PHP-код в XML или XHTML, чтобы соответствовать XML стандартам, вам следует использовать форму <?php ?>. В PHP 7 удалена поддержка тегов ASP и <script language="php">. Так что мы рекомендуем использовать только <?php ?> и <?= ?> для максимальной совместимости и переносимости. Открывающие и закрывающие теги PHP 2. Вы можете использовать короткий 'echo'-тег чтобы . Он всегда разрешен начиная с PHP 5.4.0. Этот тег эквивалентен такому коду . 3. 4. Поддержка такого синтаксиса удалена в PHP 7.0.0. 5. <% echo 'Также вы можете использовать теги в ASP стиле'; %> Код с такими тегами <%= $variable; %> является сокращением от <% echo $variable; %> Поддержка обоих этих синтаксисов удалена в PHP 7.0.0. ]]> Короткие теги (третий пример) доступны, только когда они включены с помощью директивы short_open_tag в конфигурационном файле &php.ini;, либо если PHP был скомпилирован с опцией . ASP-теги (пятый пример) доступны, только когда они включены с помощью директивы asp_tags в конфигурационном файле &php.ini;. В PHP 7.0.0 их поддержка удалена. Следует избегать использования коротких тегов при разработке приложений или библиотек, предназначенных для распространения или размещения на PHP-серверах, не находящихся под вашим контролем, так как короткие теги могут не поддерживаться на целевом сервере. Для создания переносимого, совместимого кода, не используйте короткие теги. В PHP 5.2 и более ранних версиях парсер не позволял файлам содержать только один открытый тег <?php. Это было разрешено, начиная с версии PHP 5.3 при наличии одного или более пробела после открывающего тега. Начиная с PHP 5.4 короткий тег echo <?= всегда распознается и действует, несмотря на значение опции short_open_tag.
Разделение инструкций Как в C или Perl, PHP требует окончания инструкций точкой запятой в конце каждой инструкции. Закрывающий тег блока PHP-кода автоматически применяет точку с запятой; т.е. нет необходимости ставить точку с запятой в конце последней строки блока с PHP-кодом. Закрывающий тег блока "поглотит" немедленно следующий за ним переход на новую строку, если таковой будет обнаружен. Закрывающий тег PHP-блока в конце файла не является обязательным, и в некоторых случаях его опускание довольно полезно, например, при использовании include или require, так, что нежелательные пробелы не останутся в конце файла и вы все еще сможете добавить http-заголовки после подключения к ответу сервера. Это также удобно при использовании буферизации вывода, где также нежелательно иметь пробелы в конце частей ответа, сгенерированного подключаемыми файлами. Комментарии PHP поддерживает комментарии в стиле 'C', 'C++' и оболочки Unix (стиль Perl). Например: ]]> Однострочные комментарии идут только до конца строки или текущего блока PHP-кода, в зависимости от того, что идет перед ними. Это означает, что HTML-код после // ... ?> или # ... ?> БУДЕТ напечатан: ?> завершает режим PHP и возвращает режим HTML, а // или # не могут повлиять на это. Если включена директива asp_tags, то аналогичное поведение будет и с // %> и # %>. Однако, тег </script> не завершает режим PHP в однострочном комментарии. Это пример

Заголовок вверху выведет 'Это пример'.

]]>
'C'-комментарии заканчиваются при первой же обнаруженной последовательности */. Убедитесь, что вы не вкладываете друг в друга 'C'-комментарии. Очень легко допустить эту ошибку при комментировании большого блока кода. ]]>