Справочник по PHP : Функции работы с данными : Строковые функции : Функции сравнения

смотрим также

Материал из Справочник Web-языков

Перейти к: навигация, поиск


Содержание

strcmp

Сравнивает строки.

Синтаксис:

int strcmp(string str1, string str2)

Эта функция сравнивает две строки посимвольно (точнее, бобайтово) и возвращает:

  • 0 - если строки полностью совпадают;
  • -1 - если строка str1 лексикографически меньше str2;
  • 1 - если, наоборот, str1 "больше" str2.

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

strncmp

Сравнивает начала строк.

Синтаксис:

int strncmp(string str1, string str2, int len)

Эта функция отличается от strcmp() тем, что сравнивает не все слово целиком, а первые len байтов. В случае, если len меньше длины наименьшей из строк, то строки сравниваются целиком.

Эта функция сравнивает две строки посимвольно (точнее, побайтово) и возвращает:

  • 0 - если строки полностью совпадают;
  • -1 - если строка str1 лексикографически меньше str2;
  • 1 - если, наоборот, str1 "больше" str2.

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

strcasecmp

Сравнивает строки без учета регистра.

Синтаксис:

int strcasecmp(string str1, string str2)

То же самое, что и strcmp(), только при работе не учитывается регистр букв.

$str1 = "Привет!";
$str2 = "привет!";
if(!strcesecmp($str1, $str2))
  echo "$str1 == $str2 при сравнении строк без учета регистра";

strncasecmp

Сравнивает начала строк без учета регистра.

Синтаксис:

int strncasecmp(string str1, string str2, int len)

Функция strncasecmp() является комбинацией функций strcasecmp() и strncmp().

strnatcmp

Производит "естественное" сравнение строк.

Синтаксис:

int strnatcmp(string str1, string str2)

Данная функция имитирует сравнение строк, которое использовал бы человек.

$arr1 = $arr2 = array("img12.png", "img10.png", "img2.png", "img1.png");
echo "Обычная сортировка\n";
usort($arr1, "strcmp");
print_r($arr1);
echo "\nЕстенственная сортировка\n";
usort($arr2, "strnatcmp");
print_r($arr2);

Данный скприпт выведет следующее:

Обычная сортировка
Array
(
    [0] => img1.png
    [1] => img10.png
    [2] => img12.png
    [3] => img2.png
)

Естественная сортировка
Array
(
    [0] => img1.png
    [1] => img2.png
    [2] => img10.png
    [3] => img12.png
)

strnatcasecmp

Производит "естественное" сравнение строк без учета регистра.

Синтаксис:

int strnatcasecmp(string str1, string str2)

То же, что и strnatcmp(), только игнорирует регистр.

similar_text

Производит определение схожести двух строк.

Синтаксис:

int similar_text(string firsrt, string second [, double percent])

Функция similar_text() вычисляет схожесть двух строк по алгоритму, описанному Оливером (Oliver [1993]). Но вместо стека (как в псевдокоде Оливера) она использует рекурсивные вызовы.

Сложность алгоритма делает функцию медленной, и ее скорость пропорциональна (N^3), где N - длина наибольшей строки.

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

levenshtein

Определение различия Левенштейна двух строк.

Синтаксис:

int levenshtein(string str1, string str2)
int levenshtein(string str1, string str2, int cost_ins, int cost_rep, int cost_del)
int levenshtein(string str1, string str2, function cost)

"Различие Левенштейна" - это минимальное чило символов, которое требовалось бы заменить, вставить или удалить для того, чтобы превратить строку str1 в str2. Сложность алгоритма пропорциональна произведению длин строк str1 и str2, что делает функцию более быстродействующей, чем similar_text().

Первая форма функции возвращает число необходимых операций над символами строк для трансформации str1 в str2.

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

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

Функция cost вызывается со следующими аргументами:

  • применяемая операция (вставить, изменить, удалить): "I*quot;, "R", "D";
  • фактический символ первой строки
  • фактический символ второй строки
  • позиция строки 1
  • позиция строки 2
  • оставшаяся длина строки 1
  • оставшаяся длина строки 2

Вызываемая функция должна будет возвратить стоимость этой операции.

Если длина одной из строк более 255 символов, функция levenshtein() возвращает -1, но такая длина более чем достаточна.

Добавить страницу в закладки:
РАЗРЕШАЕТСЯ перепечатывать и копировать информацию ТОЛЬКО ПРИ РАЗМЕЩЕНИИ ссылки на оригинал!
(<A href="http://www.spravkaweb.ru/">Справочник Web-языков</A>)
другие проекты
Rambler\'s Top100 Индекс цитирования