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

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(), но в то же время выдает гораздо менее надежные "хеш-коды" для строки. Так что, теперь, чтобы получить методом случайного подбора для двух разных строк одинаковые "хеш-коды", вам потребуется не триллион лет работы самого мощного компьютера, а всег лишь год-другой.

crypt
Производит симметричное шифрование.


Синтаксис:
string crypt(string str [,string salt]);

В аргументе str задается строка, которую надо зашифровать.
Хеш-код для одной и той же строки, но с различными значениями salt (Кстати, это должна быть обязательно двухсимвольная строка) дает разные результаты. Если параметр salt пропущен, PHP сгенерирует его случайным образом.
В системах, которые поддерживают несколько алгоритмов шифрования, следующие константы устанавливаются равными 1 или 0, в зависимости от того, поддерживается ли данный алгоритм или нет:

· CRYPT_STD_DES - стандартное 2-байтовое DES-шифрование (SALT=2)

· CRYPT_EXT_DES - расширенное 9-байтовое DES-шифрование (SALT=9)

· CRYPT_MD5 - 12-байтовое MD5-шифрование (SALT начинается с $1$)

· CRYPT_BLOWFISH - расширенное 12-байтовое DES-шифрование (SALT начинается с $2$)

Т.к. данная функция использует односторонний алгоритм шифрования, то функции дешифрования не имеется.

metaphone
Производит вычисление метафон-хеша.


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

Данная функция схожа по действию с soundex(), вычисляет код произношения слова, переданного в строке str, но с повышенной точностью вычисления, т.к. использует правила произношения английского языка.
Возвращаемое строковое значение может быть переменной длины.

soundex
Вычисления хеша сходности произношения.


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

Функция soundex() используется для проверки правописания, когда приблизительно известно как звучит слово, но не известно, как оно пишется, и имеется словарь (база данных), относительно которого можно осуществить проверку.
Возвращается строка из 4 символов: первая буква слова и 3 цифры.

soundex("Euler") == soundex("Ellery") == "E460";soundex("Gauss") == soundex("Ghosh") == "G200";soundex("Hilbert") == soundex("Heilbronn") == "H416";soundex("Knuth") == soundex("Kant") == "K530";soundex("Lloyd") == soundex("Ladd") == "L300";soundex("Lukasiewicz") == soundex("Lissajous") == "L222";

 

 




























Символические ссылки. Жесткие ссылки

Немного теории

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

Символическая ссылка - это просто бинарный файл специального вида, который содержит ссылку на основной файл. При обращении к такому файлу (например, открытию его на чтение) система "соображает", к какому объекту на самом деле запрашивается доступ, и прозрачно его обеспечивает. Это означает, что мы можем использовать символические ссылки точно так же, как и обычные файлы. Однака иногда нужно бывает работать со ссылкой именно как со ссылкой, а не как с файлом. Для этого и существуют перечисленные ниже функции PHP.

Жесткие ссылки

Создание символической ссылки - не единственный способ задать для одного файла несколько имен. Главный недостаток символических ссылок - существование основного имени файла, на которое все и ссылаются. Попробуйте удалить этот файл - и вся "паутина" ссылок, если таковая имелась, развалиться на куски. Есть и другой недостаток: открытие файла, на который указывает ссылка, происходит несколько медленнее, т.к. системе нужно проанализировать содержимое ссылки и установить связь с "настоящим" файлом. Особенно это чувствуется, если одна ссылка указывает на другую, а та на третью и т.д. уровней на 10.

Жесткие ссылки позволяют вам иметь для одного файла несколько совершенно равноправных имен, причем доступ по ним осуществляется одинаково быстро. При этом, если одно из таких имен будет удалено, то сам файл удалиться только в том случае, если данное имя было последним, и других имен у файла нет.

Зарегестрировать новое имя у файла (то есть создать для него жесткую ссылку) можно с помощью функции link(). Ее синтаксис полностью идеентичен функции symlink(), да и работает она по тем же правилам, за исключением того, что создает не символическую, а жесткую ссылку.

readlink
Возвращает имя основного файла.

Синтаксис:
string readlink(string $linkname)

Возвращает имя основного файла, с которым связан его синоним $linkname. Это бывает полезно, если вы хотите узнать основное имя файла, чтобы, например, удалить сам файл, а не ссылку на него. В случае ошибки функция возвращает значение "ложь".

symlink
Создает символическую ссылку.

Синтаксис:
bool symlink(string $target, string $link)

Эта функция создает символическую ссылку с именем $link на объект (файл или каталог), заданную в $target. В случае "провала" функция возвращает false.

lstat
Функция собирает вместе всю информацию, выдаваемую операционной системой для указанной ссылки, и возвращает ее в виде массива.

Синтаксис:
array lstat(string $filename)

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

linkinfo
Функция возвращает значение поля "устройство" из результата, выдаваемого функцией lstat().

Синтаксис:
int linkinfo(string $linkname)

Ее обычно задействуют, если хотят определить, существует ли еще объект, на который указывает символическая ссылка в $linkname.

 










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



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