Смекни!
smekni.com

Учебник php (стр. 11 из 26)

setlocale("LC_CTYPE","ru_SU.KOI*-R");// Здесь вызов устанавливает таблицу замены// регистра букв в соответствии с кодировкой KOI8-R.

Преобразование кодировок

convert_cyr_string
Преобразует строку из одной кодировки кириллицы в другую.

Синтаксис :
string convert_cyr_string(string str, string from, string to);

Функцияпереводитстрокуstrизкодировкиfromвкодировкуto. Конечно, это имеет смысл только для строк, содержащих "русские" буквы, т.к. латиница во всех кодировках выглядит одинаково. Разумеется, кодировка from должна совпадать с истинной кодировкой строки, иначе результат получится неверным. Значения from и to - одиночный символ, определяющий кодировку:

· k - koi8-r

· w - windows-1251

· i - iso8859-5

· a - x-cp866

· d - x-cp866

· m - x-mac-cyrillic

Функция работает достаточно быстро, так что ее вполне можно применять для перекодировки писем в нужную форму перед их отправкой по электронной почте.

bin2hex
Производит преобразование символьных данных в шестнадцатеричный вид.

Синтаксис :
string bin2hex(string str)

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

Функции форматных преобразований

parse_url
Обрабатывает URL и возвращает его компоненты.

Синтаксис :
array parse_url(string url);

Эта функция возвращает ассоциативный массив, включающий множество различных существующих компонентов URL. Онивключают "scheme", "host", "port", "user", "pass", "path", "query" и "fragment".

parse_str
Заносит строки URL в переменные.

Синтаксис :
void parse_str(string str [, array arr]);

Функция parse_str() интерпретирует строку str, как если бы эта строка содержала в себе переменные и их значения и передавалась бы в URL. Наша функция устанавливает для этих переменных значения.
Если задан второй необязательный параметр, то значения, найденные при помощи функции parse_str(), сохраняться не в глобальных переменных, а в элементах указанного массива.

$str = "name[]=Vasia&name[]=Pupkin&id=12645&mail=vasia@mail.ru&url=www.vasia.ru";parse_str($str);parse_str($str, $arr);echo $id; // выведет 1264echo $name[0]; // выведет Vasiaecho $name[1]; // выведет Pupkinprint_r($arr);// выведетArray( [name] => Array ( [0] => Vasia [1] => Pupkin ) [id] => 12645 [mail] => vasia@mail.ru [url] => www.vasia.ru)

rawurlencode
Кодирование URL.


Синтаксис :
string RawUrlEncode(string str);

Функция RawUrlEncode() возвращает строку, в которой все не алфавитно-цифровые символы (за исключением дефиса "-", знака подчеркивания "_" и точки ".") заменены последовательностями: знак процента (%), за которым следуют две шестнадцатеричные цифры, которые обозначают код символа. Это кодирование нужно для того, чтобы буквенные символы не обрабатывались в качестве разделителей строки URL и не искажались при передаче в сетях.

echo "<A href=ftp://user:".rawurlencode($mypasswd)."@ftp.my.com/x.txt>"; // передача пароля в гиперссылке

rawurldecode
Производит декодирование URL.


Синтаксис :
string rawurldecode(string str);

Эта функция возвращает строку, в которой последовательности с знаком процента (%) и следующими за ним двумя шестнадцатеричных цисла преобразует в симолы, соответствующими этому коду. Аналогична urldecode(), но не воспринимает + как пробел.

$str="foo%20bar%40baz";echo rawurldecode($str);// выведет foo bar@baz

base64_encode
Кодирует данные в кодировке MIME base64.

Синтаксис :
string base64_encode(string data);

base64_encode() возвращает data закодированные в кодировке base64. Эта кодировка разработана для того, чтобы передовать двоичные данные через транспортные слои, которые не содержат восьмой бит, такие как почтовые тела. Данные в кодировке Base64 занимают примерно на 33% больше места, чем оригинал.

base64_decode
Декодирует данные, закодированные в кодировке MIME base64.

Синтаксис :
string base64_decode(string encoded_data);

base64_decode() декодирует encoded_data и возвращает оригинал данных. Возвращаемые данные могут быть двоичными.

Функции URL

number_format
Форматирование числа.

Синтаксис :
number_format($number, $decimals, $dec_point=".", $thousands_sep=",");

Эта функция форматирует число с плавающей точкой с разделением его на триады с указанной точностью. Она может быть вызвана с двумя или четырьмя аргументами, но не с тремя! Параметр $decimals задает, сколько цифр после запятой должно быть у числа в выходной строке. Параметр $dec_point представляет собой разделитель целой и дробной частей, а параметр $thousands_sep - разделитель триад в числе (если указать на его месте пустую строку, то триады не отделяются друг от друга).

Работа с бинарными данными

pack
Пакетирование данных в двоичную строку.

Синтаксис :
string pack(string format [,mixed $args, ...]);

Функция pack() упаковывает заданные аргументы в бинарную строку, которая затем и возвращается. Формат параметров, а также их количество, задается при помощи строки $format, которая представляет собой набор однобуквенных спецификаторов форматирования - наподобие тех, которые указываются в sprintf(), но только без знака %. После каждого спецификатора может стоять число, которое отмечает, сколько информации будет обработано данным спецификатором. А именно, для форматов a,A,h и H число задает, какое количество символов будет помещено в бинарную строку из тех, что находится в очередном параметре-строке при вызове функции (то есть, определяет размер поля для вывода строки). В случае @ оно определяет абсолютную позицию, в которую будут помещены следующие данные. Для всех остальных спецификаторов следующие за ними числа задают количество аргументов, на которые распространяется действие данного формата. Вместо числа можно указать *, в этом случае подразумевается, что спецификатор действует на все оставшиеся данные.

Вот полный список спецификаторов формата:

· a - строка, свободные места в поле заполняются символом с кодом 0;

· A - строка, свободные места заполняются пробелами;

· h - шестнадцатиричная строка, младшие разряды в начале;

· H - шестнадцатиричная строка, старшие разряды в начале;

· c - знаковый байт (символ);

· C - беззнаковый байт;

· s - знаковое короткое целое (16 битовб порядок байтов определяется архитектурой процессора);

· S - беззнаковое короткое число;

· n - беззнаковое целое (16 битов, старшие разряды в конце);

· v - беззнаковое целое (16 битов, младшие разряды в конце);

· i - знаковое целое (размер и порядок байтов определяется архитектурой);

· I - беззнаковое целое;

· l - знаковое длинное целое (32 бита, порядок знаков определяется архитектурой);

· L - беззнаковое длинное целое;

· N - беззнаковое длинное целое (32 бита, старшие разряды в конце);

· V - беззнаковое целое (32 бита, младшие разряды в конце);

· f - число с плавающей точкой (зависит от архитектуры);

· d - число с плавающей точкой двойной точности (зависит от архитектуры);

· x - символ с нулевым кодом;

· X - возврат назад на 1 байт;

· @ - заполнение нулевым кодом до заданной абсолютной позиции.

// Целое, целое, все остальное - сиволы$bindata = pack("nvc*", 0x1234, 0x5678, 65, 66);

После выполнения приведенного кода в строке $bindata будет содержаться 6 байтов в такой последовательности:
0x12, 0x34, 0x78, 0x56, 0x41, 0x42 (в шестнадцатиричной системе счисления).

unpack
Распаковывает данные из двоичной строки.

Синтаксис :
array unpack(string format, string data);

Распаковывает данные из двоичной строки в массив согласно формату. Возвращает массив, содержащий распакованные элементы.

$array = unpack("c2chars/nint", $binarydata);

Возникающий в результате массив будет содержать "chars1", "chars2" и "int".

Строковые суммы и хеш-функции

strlen
Возвращает длину строки.

Синтаксис :
int strlen(string str)

Возвращает просто длину строки, т.е., сколько символов содержится в str.
Строка может содержать любые символы, в том числе и с нулевым кодом. Функция strlen() будет правильно работать и с такими строками.

count_chars
Возвращает информацию о символах строки.

Синтаксис :
mixed count_chars(string str [, int mode])

Функция count_chars() подсчитывает частоту встречаемости каждого байта (0-255) в строке str и возвращает в массиве результат согласно необязательному аргументу mode. mode может принимать следующие значения:

· 0 (по умолчанию)- массив с байтами в качестве индексов и частотой повторения в качестве значений элемента массива

· 1 - похож на 0, но отсутствующие в строке str байты не возвращаются

· 2 - похож на 0, но возвращаются только те байты, которые отсутствуют

· 3 - возвращается строка, состоящая из всех обнаруженных символов

· 4 - возвращается строка, состоящая из всех отсутствующих символов

md5
Получение строки-хеша MD5.


Синтаксис :
string md5(string str);

Возвращает хеш-код строки str, основанный на алгоритме корпорации RSA Data Security под названием "MD5 Message-Digest Algorithm". Хеш-код - это просто строка, практически уникальная для каждой из строк str. То есть вероятность того, что две разные строки, переданные в str, дадут нам одинаковый хеш-код, стремиться к нулю.
В то же время, если длина строки str может достигать нескольких тысяч символов, то ее MD5-код занимает максимум 32 символа.

crc32
Получение полиминала строки crc32.


Синтаксис :
int crc32(string str);

Функция crc32() вычисляет 32-битную контрольную сумму строки str. То есть, результат ее работы - 32-битное (4-байтовое) целое число.
Обычно эту функцию используют для проверки целостности переданных данных.
Эта функция работает гораздо быстрее md5(), но в то же время выдает гораздо менее надежные "хеш-коды" для строки. Так что, теперь, чтобы получить методом случайного подбора для двух разных строк одинаковые "хеш-коды", вам потребуется не триллион лет работы самого мощного компьютера, а всег лишь год-другой.