ГЛАВА 8. Строки и регулярные выражения
Преобразование строк и файлов к формату 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è
// Fracçiaise' costs < 42.25.";
Функция htmlentities() в настоящее время работает только для символов кодировки ISO-8559-1(ISO-Latin-1). Кроме того, она не преобразует пробелы в , как следовало бы ожидать.
htmlspecialchars()
Функция htmlspecialchars() заменяет некоторые символы, имеющие особый смысл в контексте HTML, эквивалентными конструкциями HTML.
Синтаксис функции htmlspecialchars():
string htmlspecialchars(string строка)
Функция htmlspecialchars() в настоящее время преобразует следующие символы:
- & преобразуется в &; " " преобразуется в ";
- < преобразуется в <; > преобразуется в >.
В частности, эта функция позволяет предотвратить ввод пользователями разметки 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 <<enough>> of PHP & 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 é il piatto piú 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>"
Назад |
Содержание раздела |
Общее Содержание |
Вперед
Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
|