Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

25.6. Работа с кодом HTML в PHP

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

Сам процесс создания скриптов неразрывно связан с HTML-тегами, поэтому было бы странно, если бы разработчики РНР не подумали в первую очередь о нас с вами и не создали функции работы с кодом HTML.

Мы расскажем о следующих функциях:

• nl2br(),

• htmlspecialchars(),

• htmlentities(),

• get_meta_tags().

Одна из самых простых функции nl2br() переводит символы новой строки в HTML-Синтаксис этой функции:

string nl2br(string string);

Возвращает string с <br>, вставляемыми перед каждой новой строкой.

Чтобы скрипт выводил строку с тегами и эти теги не воспринимались браузером как мета-теги, а, наоборот, отражались на экране браузера, используют функцию htmlspecialchars(). Она осуществляет перевод специальных символов в код HTML (см. табл. 25.1). Рассмотрим синтаксис функции:

string htmlspecialchars(string string [, int quote_style])

Некоторые символы имеют специальное значение в HTML и должны быть представлены HTML-объектами, если им необходимо сохранить свои значения. Функция htmlspecialchars() возвращает строку с некоторым преобразованием, это очень полезно использовать при частом Если нужно, чтобы

все особенности HTML-объекта были преобразованы, применяют функцию htmlentities() вместо htmlspecialchars().

Определенные символы имеют особое значение в HTML и должны быть заменены кодами HTML, если они такие имеют. Функция htmlspecialchars() возвращает строки с произведенными такими изменениями. Она полезна для очистки полученного от пользователя текста от разметки HTML (доски сообщений, гостевые книги).

Второй необязательный параметр, quote_style, сообщает функции, что делать с одинарными и двойными кавычками. ЕОТ_СОМРАТ является обратно совместимым способом, который только переводит символ с двойной кавычкой и оставляет непереведенную одинарную кавычку. Если ENT_QUOTES установлен, и одиночные, и двойные кавычки переведутся, а если установлен NOQUOTES — ни одиночные, ни двойные кавычки не будут переведены.

В табл. 25.1 приведены существующие замены:

Таблица 25.1. Преобразование специальных символов


ВНИМАНИЕ

Функция htmlspecialchars() не заменяет ничего, кроме указанного в табл. 25.1. Для полной обработки необходимо обратится к функции htmlentities(). Второй параметр в функции htmlspecialchars() был добавлен в РНР 3.0.17.


Рассмотрим пример:

<?php

$new = htmlspecialchars("<ahref = 'test'>Ссылка</а>" , ENT__QUOTES);

$new2 = htmlspecialchars("<h1>Текст с использованием знака амперсанда & </h1>");

echo $new."<br>";

echo $new2."<br>";

?>

Из примера видно, что функция позволяет выводить в первом случае все содержимое строки на экран браузера даже с учетом одинарных кавычек, во втором случаю основное внимание необходимо обратить на амперсанд (&). Результатом работы этого примера будут следующие строки:

<а href='test'>Ссылка</a>

<h1>Текст с использованием знака амперсанд & </h1>

Как видите, все осталось на своих местах и браузер даже не попытался произвести обработку приведенных тегов.

Аналогичной функцией является htmlentities(). Она позволяет переводить все возможные символы в коды HTML. Данная функция имеет синтаксис, аналогичный htmlspecialchars():

string htmlentities(string string [, int quote_style])

Все символы, которые имеют соответствующий код HTML, заменяются на этот HTML-код и будут видны в браузере.

В настоящее вр емя применяется кодовая таблица ISO-8859-1.

Второй параметр функции htmlentities() — quote_style — был добавлен в РНР3.0.17.

Функция get_meta_tags позволяет осуществлять работу с HTML-кодом, а в частности извлекать все содержимое атрибутов тега <meta> из файла и возвращать в массиве. Синтаксис функции get_meta_tags()

array get_meta_tags(string filename[, int use_include_path])

Функция get_meta_tags() возвращает ассоциативный массив, созданный на основании полученных атрибутов name и content тега <meta>. В этом массиве в качестве ключа, т. е. индекса ассоциативного массива, будет использоваться значение атрибута паше, а само возвращаемое значение данного элемента массива будет равно значению атрибута content, указанного в теге <meta>. Отсюда следует, что в дальнейшем вы можете без труда осуществлять операции с полученными значениями данного массива.

Специальные символы взначении, свойства заменяются символом «_», остальные переводятся в нижний регистр.

Элемент <meta> используется для включения различной информации о документе, а также представляет возможность сообщать дополнительные инструкции как клиентской части (браузеру), так и серверной. Он используется в форме «свойство—значение». Например, чтобы указать автора документа, используется следующая строка:

<meta name="Author" content="Pushkin">

В данном примере определяется свойство которому присваивается значение (Pushkin). Вы можете определять любые свойства и присваивать им любые значения.


ВНИМАНИЕ

Функция get_meta_tags() позволяет получать только свойства NAME и CONTENT. Другие совокупности атрибутов получить не удается.


Для примера создадимдва файла. Первый будет HTML-файл, содержащий следующую совокупность тегов HTML-страницы. Файл назовем newname.html:

<html>

<head>

<title>Test</title>

1. <meta name="Author" content="Pushkin">

2. <meta http-equiv="Content-Type" content="text/html">

3. <meta name="Copyright" content ="SinkORG">

4. <meta n^e="fescription" content="PHP, PHP3, PHP Documentation">

5. <meta name="Generator" content="FrontPage">

6. <meta name="Keywords" content="Documentation, PHP scripts">

</head>

<body>

Test

</body>

</html>

Здесь нас интересует пронумерованный блок с мета-тегами. Строка 1 описывает автора документа, строка 2 используется для указания инструкций серверу, 3 — информация об авторском праве, 4 — описание документа (применяется непосредственно для поисковых машин), 5 — название программы, с помощью которой создавался документ, 6 — ключевые слова (для поисковых машин). Теперь посмотрим, какие значения этих мета-тегов вернутся в ассоциативный массив. Пример скрипта приведен ниже:

<?php

$path = "Z:/home/localhost/www/newname.htm";

$arra = get_meta_tags($path);

print_r ($arra);

?>

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

Array ([Author] => Pushkin [Copyright] => SinkORG [Description] => PHP, PHP3, PHP Documentation [Generator] => FrontPage [Keywords] => Documentation, PHP scripts)

Обратите что атрибут был возвращен в массив.


ВНИМАНИЕ

Установка параметра use_include_path со значением, равным "/", приведет к тому, что РНР будет пытаться открыть файл по стандартному пути include.


Описанные функции работы с HTML-тегами работают в РНР 3 и РНР 4.

В качестве исключения можно выделить функцию get_meta_tags(). Она используется в РНР 3-3.0.4 и РНР 4.

<< Предыдущий параграф Следующий параграф >>
Оглавление