PHP 4 на практике

Преобразование строк и файлов к формату HTML и наоборот


Преобразовать строку или целый файл к формату, подходящему для просмотра в web-браузере (или наоборот), проще, чем может показаться на первый взгляд. В РНР для этого существуют специальные функции.

Преобразование текста в HTML

Быстрое преобразование простого текста к формату web-браузера — весьма распространенная задача. В ее решении вам помогут функции, описанные в этом разделе.

nl2br( )

Функция nl2br( ) заменяет все символы новой строки (\n) эквивалентными конструкциями HTML <br>.

Синтаксис функции nl2br( ):

string nl2br (string строка)

Символы новой строки могут быть как видимыми (то есть явно включенными в строку), так и невидимыми (например, введенными в редакторе). В следующем примере текстовая строка преобразуется в формат HTML посредством замены символов \n разрывами строк:

// Текстовая строка, отображаемая в редакторе.

$text_recipe = "

Party Sauce recipe:

1 can stewed tomatoes

3 tablespoons fresh lemon juice



Stir together, server cold.";

// Преобразовать символы новой строки в <br>

$htinl_recipe = nl2br($text_recipe)

При последующем выводе $html_recipe браузеру будет передан следующий текст в формате HTML:

Party Sauce recipe:<br>

1 can stewed tomatoes<br>

3 tablespoons fresh lemon juice<br>

Stir together, server cold.<br>

htmlentities( )

Функция htmlentities( ) преобразует символы в эквивалентные конструкции HTML. Синтаксис функции htmlentities:

string htmlentities (string строка)

В следующем примере производится необходимая замена символов строки для вывода в браузере:

$user_input = "The cookbook, entitled Cafe Francaise' costs < $42.25.";

$converted_input = htmlentities($user_input);

// $converted_input = "The cookbook, entitled 'Caf&egrave;

// Frac&ccediliaise' costs &lt; 42.25.";

Функция htmlentities( ) в настоящее время работает только для символов кодировки ISO-8559-1 (ISO-Latin-1). Кроме того, она не преобразует пробелы в &nbsp;, как следовало бы ожидать.


htmlspecialchars( )

Функция htmlspecialchars( ) заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML. Синтаксис функции htmlspecialchars( ):

string htmlspecialchars (string строка)

Функция html special chars( ) в настоящее время преобразует следующие символы:

& преобразуется в &amp;; " " преобразуется в &quot;;

< преобразуется в &lt;; > преобразуется в &gt;.

В частности, эта функция позволяет предотвратить ввод пользователями разметки HTML в интерактивных web-приложениях (например, в электронных форумах). Ошибки, допущенные в разметке HTML, могут привести к тому, что вся страница будет формироваться неправильно. Впрочем, у этой задачи существует и более эффективное решение — полностью удалить теги из строки функцией strip_tags( ).

Следующий пример демонстрирует удаление потенциально опасных символов функцией htmlspeclalchars( ):

$user_input = "I just can't get «enough» of PHP & those fabulous cooking recipes!";

$conv_input = htmlspecialchars($user_input);

// $conv_input = "I just can't &lt;&lt;enough&gt;&gt; of PHP &amp those fabulous cooking

recipes!"

Если функция htmlspecialchars( ) используется в сочетании с nl2br( ), то последнюю следует вызывать после htmlspecialchars( ). В противном случае конструкции <br>, сгенерированные при вызове nl2br( ), преобразуются в видимые символы.

get_html_translation_table ( )

Функция get_html_translation_table( ) обеспечивает удобные средства преобразования текста в эквиваленты HTML Синтаксис функции get_htrril_translation_table( ):

string get_html_translation_table (int таблица)

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



Параметр таблица принимает одно из двух значений:



  • HTML_ENTITIES;


  • HTML_SPECIALCHARS.


  • В следующем примере функция get_html_translation_table( ) используется при преобразовании текста в код HTML:

    $string = "La pasta e il piatto piu amato in Italia";

    $translate = get_html_translation_table(HTML_ENTITIES);

    print strtr($string, $translate);

    // Специальные символы преобразуются в конструкции HTML

    // и правильно отображаются в браузере.

    Кстати, функция array_flip( ) позволяет провести преобразование текста в HTML в обратном направлении и восстановить исходный текст. Предположим, что вместо вывода результата strtr( ) в предыдущем примере мы присвоили его переменной $translated string.

    В следующем примере исходный текст восстанавливается функцией array_flip( ):

    $translate = array_flip($translate);

    $translated_string - "La pasta &eacute; il piatto pi&uacute; amato in Italia";

    $original_string = strtr($translated_string, $translate);

    // $original_string = "La pasta e il piatto piu amato in Italia";

    strtr( )

    Функция strtr( ) транслирует строку, то есть заменяет в ней все символы, входящие в строку источник, соответствующими символами строки приемник. Синтаксис функции strtr( ):

    string strtr (string строка, string источник, string приемник)

    Если строки источник и приемник имеют разную длину, длинная строка усекается до размеров короткой строки.

    Существует альтернативный синтаксис вызова strtr( ) с двумя параметрами; в этом случае второй параметр содержит ассоциативный массив, ключи которого соответствуют заменяемым подстрокам, а значения — заменяющим подстрокам. В следующем примере теги HTML заменяются XML-подобными конструкциями:

    $source = array("<title>" => "<h1>". "</title> => "</h1>");

    $string = "<h1>Today In PHP-Powered News"</h1>";

    print strtr($string, $source);

    // Выводится строка "<title>Today in PHP-Powered News</title>"


    Содержание раздела