Главная Статьи Написать
 
Начнём
Введение
Инсталяция
Конфигурирование
Безопасность
Справочник Языка
Базовый синтаксис
Типы
Переменные
Константы
Выражения
Операции
Структуры управления
Функции
Классы и Объекты
Ссылки. Разъяснение.
Возможности
Обработка Ошибок
Создание изображений и манипуляции с ними
HTTP-аутентификация в PHP
Куки
Обработка загрузки файлов
Использование удалённых файлов
Обслуживание соединений
Постоянные соединения с базами данных
Безопасный режим
Использование PHP из командной строки
Функции. Справочник.
Функции, специфические для Apache
Array-функции
Aspell-функции [не рекомендуются]
BCMath математические функции произвольной точности
Bzip2 Compression-функции
Calendar-функции
CCVS API-функции
Функции поддержки COM для Windows
Class/Object-функции
ClibPDF-функции
Crack-функции
CURL, Client URL Library-функции
Cybercash payment-функции
Crédit Mutuel CyberMUT-функции
Cyrus IMAP -функции администрирования
Функции типов символов
Функции абстрактного слоя БД (dbm-стиль)
Дата и Время
dBase-функции
DBM-функции
dbx-функции
DB++-функции
Direct IO-функции
Функции директорий
DOM XML-функции
.NET-функции
Обработка ошибок и логинг
FrontBase-функции
filePro-функции
Функции файловой системы
Forms Data Format-функции
FriBiDi-функции
FTP-функции
Функции работы с функциями
Gettext
GMP-функции
HTTP-функции
Hyperwave-функции
Hyperwave API-функции
ICAP-функции [не рекомендуются]
iconv-функции
Image-функции
IMAP, POP3 и NNTP-функции
Informix-функции
InterBase-функции
Ingres II-функции
IRC Gateway-функции
Java
LDAP-функции
Mail-функции
mailparse-функции
Mathematical-функции
Многобайтные строки
MCAL-функции
Mcrypt Encryption-функции
Mhash-функции
Mimetype-функции
Microsoft SQL Server-функции
Ming-функции для Flash
Прочие функции
mnoGoSearch-функции
mSQL-функции
MySQL-функции
Mohawk Software -функции обработчика сессии
muscat-функции
Network-функции
Ncurses -функции управления терминалом
Lotus Notes-функции
Unified ODBC-функции
Oracle 8-функции
OpenSSL-функции
Oracle-функции
Ovrimos SQL-функции
Управление выводом
Перегрузка свойств объектов и вызовов методов
PDF-функции
Verisign Payflow Pro-функции
PHP. Опции & Информация
POSIX-функции
PostgreSQL-функции
Управление процессом
Выполнение программы
Printer-функции
Pspell-функции
GNU Readline
GNU Recode-функции
Функции регулярных выражений (Perl-совместимые)
qtdom-функции
Функции регулярных выражений (POSIX расширенная)
Semaphore, Shared Memory и IPC-функции
SESAM database-функции
Обслуживание сессий
Shared Memory-функции
Shockwave Flash-функции
SNMP-функции
Socket-функции
String-функции
Sybase-функции
URL-функции
Функции переменных
vpopmail-функции
W32api-функции
WDDX-функции
XML parser-функции
XMLRPC-функции
XSLT-функции
YAZ-функции
YP/NIS-функции
Zip File-функции (доступ только для чтения)
Zlib Compression-функции
Расширение PHP 4.0
Обзор
Возможность расширения
Строение исходного кода
Система автоматического построения РНР
Создание расширений
Использование расширений
Решение проблем
Исходные Ресурсы. Обсуждение.
Приём аргументов
Создание переменных
Дублирование содержимого переменной: конструктор Copy
Возвращаемые значения
Печать информации
Startup и Shutdown-функции
Вызов пользовательских функций
Поддержка файлов инициализации
Что дальше?
Справочник: некоторые макросы конфигурации
Макросы API
FAQ: Frequently Asked Questions
Общая информация
Списки рассылки
Получение PHP
Вопросы о базах данных
Инсталяция
Проблемы построения
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход от PHP 2 к PHP 3
Переход от PHP 3 к PHP 4
Другие вопросы
Приложения
История PHP и смежных проектов
Переход от PHP 3 к PHP 4
Переход от PHP/FI 2 к PHP 3
Отладка PHP
Расширение PHP
Список псевдонимов функций
Список зарезервированных слов
Список типов ресурсов
Список лексем разборщика
Об этом учебнике




Выход из HTML

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

Имеются четыре набора тэгов, которые используются для обозначения блоков кода PHP.
Только два из них (<?php. . .?> и <script language="php">. . .</script>) всегда доступны; другие можно включать и отключать из файла конфигурации php.ini. Хотя сокращённые тэги и тэги в стиле ASP могут быть удобны, они не так переносимы, как их длинные версии. Также, если вы предполагаете внедрять PHP-код в XML или XHTML, нужно использовать форму <?php. . .?> для соответствия XML.

Тэги, поддерживаемые PHP:

Пример 5-1. Способы выхода из HTML
1.  <?php echo("если вы хотите работать с документами XHTML или XML, делайте так\n"); ?>

2.  <? echo ("это простейшая SGML-инструкция процессинга\n"); ?>
    <?= выражение ?> Это аббревиатура для "<? echo выражение ?>"
    
3.  <script language="php">
        echo ("некоторые редакторы (вроде FrontPage) не любят
              инструкции процессинга");
    </script>

4.  <% echo ("Вы можете по выбору использовать тэги в стиле ASP"); %>
    <%= $variable; # Это аббревиатура для "<% echo . . ." %>

Первый способ, <?php. . .?>, это предпочтительный метод, так как он позволяет использовать PHP в коде, соответствующем правилам XML, таком как XHTML.

Второй способ вообще невозможен. Сокращённые тэги доступны только тогда, когда они подключены. Это можно сделать функцией short_tags() (только в PHP 3), включив установку конфигурации short_open_tag в PHP config-файле, или скомпилировав PHP с опцией --enable-short-tags в configure. Даже если вы по умолчанию включили в php.ini-dist, использование сокращённых тэгов не рекомендуется.

Четвёртый способ доступен, только если тэги в стиле ASP включены с использованием установки конфигурации asp_tags.

Примечание: поддержка тэгов ASP-стиля была введена в версии 3.0.4.

Примечание: использование сокращённых тэгов должно быть исключено при разработке приложений или библиотек, предназначенных для распространения или при публикации на PHP-серверы, которые вами не контролируются, поскольку сокращённые тэги могут не поддерживаться на целевом сервере. Для обеспечения переносимости и распространения кода не используйте сокращённые тэги.

Закрывающий тэг блока будет иметь следом за собой ведомый символ newline, если он имеется. Также закрывающий тэг автоматически подразумевает точку с запятой; вам не нужно также вводить символ "точка с запятой" в конце последней строки PHP-блока.

PHP позволяет использовать структуры такого вида:

Пример 5-2. Advanced escaping/продвинутая замена
<?php
if ($expression) { 
    ?>
    <strong>Это правильно.</strong>
    <?php 
} else { 
    ?>
    <strong>Это неправильно.</strong>
    <?php 
}
?>

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