Перекодировка строк

Перекодировка содержимого строк выполняется с помощью функций:

string htmlspecialchars(string string

[, int quote_style [, string charset]])

string htmlentities(string string

[, int quote_style [, string charset]])

string html_entity_decode(string string

[, int quote_style [, string charset]])

string get_html_translation_table(int table

[, int quote_style])

string urlencode(string str)

string urldecode(string str)

string bin2hex(string str)

string quoted_printable_decode(string str)

string setlocale(mixed category,

string locale [, string...])

string setlocale(mixed category, array locale)

string convert_cyr_string(string str,

string from, string to)

Функция htmlspecialchars() преобразует в строке string служебные символы спецификации HTML в их представления в виде сущностей: "<" и ">" в "&lt;" и "&gt;", одиночный и двойной апостроф соответственно в "&quot;" и "&#039;", а символ "&" – в "&amp;". Второй параметр quote_style задает режим преобразования апострофов и может принимать одно из трех значений: ENT_COMPAT – преобразуются только двойные апострофы (по умолчанию); ENT_QUOTES – преобразуются и двойные и одиночные апострофы и ENT_NOQUOTES – апострофы не преобразуются. Третий параметр charset задает используемую таблицу кодировки (по умолчанию ISO-8859-1).

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

Функция html_entity_decode() выполняет преобразование, обратное функции htmlentities(), т.е. преобразует сущности в символы, например "&lt;" в "<".

Функция get_html_translation_table() позволяет получить таблицу преобразования, используемую по умолчанию, для служебных символов (если значение параметра table задано как HTML_SPECIALCHARS) или для сущностей (если значение параметра table задано как HTML_ENTITIES).

Функция urlencode() заменяет все символы, не являющиеся латинскими буквами или цифрами, а также символом "_", в представление %xx, где xx – шестнадцатеричное представление кода символа (например, символ "Б" будет заменен на "%C1"). Символы пробела заменяются символом "+". Функция urldecode() выполняет обратное преобразование, т.е. заменяет шестнадцатеричное представление символа самим символом, а символы "+" – пробелами.

Функция bin2hex() преобразует каждый символ исходной строки в шестнадцатеричное представление.

При передаче почтовой информации часто используется формат QUOTED_PRINTABLE, позволяющий передавать 8-битную информацию по 7-битным каналам связи. Функция quoted_printable_decode() декодирует строку этого формата в исходную 8-битовую строку.

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

· LC_CTYPE – для функций перевода в верхний/нижний регистры;

· LC_NUMERIC – для функций форматирования дроб­ных чисел (для задания разделителя целой и дробной части в чис­лах);

· LC_COLLATE – для сравнения строк;

· LC_CTYPE – для определения и сравнения символов;

· LC_MONETARY – для обозначений денежных единиц;

· LC_TIME – задает формат вывода даты и времени по умолчанию;

· LC_ALL – устанавливает все вышеперечисленные режимы.

Вторая строка и последующие строки в первой форме функции setlocale() или элементы массива во второй форме задают значения устанавливаемых настроек. Эти настройки последовательно просматриваются, пока не встретится настройка для данной компьютерной платформы (для разных компьютерных платформ значения настроек могут быть различными). Например, в Windows для русского языка и кодировки Windows-1251 можно задать значение параметра locale в виде "Russian_Russia.1251", а для украинского языка – в виде " Ukrainian_Ukraine.1251".

При создании Web-страниц часто приходится преобразовывать текст на русском или украинском языке из одной кодировке в другую. Так, если страница PHP была создана на Windows с использованием кодировки Windows-1251, но ее функционирование предполагается под управление операционной системы UNIX, то необходимо выполнить преобразование строк исходной страницы в кодировку KOI8-R. Для этого можно использовать функцию convert_cyr_string(), параметры from и to которой может иметь одно из следующих значений:

· k – koi8-r;

· w – windows-1251;

· i – iso8859-5;

· а или d – х-ср866;

· m – x-mac-cyrillic.

Так, преобразование строки $str из кодировки Windows-1251 в кодировку KOI8-R выполняется следующим образом:

$str = convert_cyr_string($str, 'w', 'k');.

Пример 4.6.124. Использование функции htmlspecialchars():

В результате выполнения предложений:

$new_str = htmlspecialchars

("The <hr> element inserts horizontal line into Web-page");

print "\$new_str='$new_str'";

на экран будет выведена строка:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: