Строковые функции в PHP. Сравнение строк в PHP
В PHP для сравнения строк используется несколько функций. В этой статье мы поговорим о том, как сравнить строки в PHP.
Итак, для сравнения можно использовать: — strcmp(); — strncmp(); — strcasecmp(); — strncasecmp(); — strnatcmp(); — strnatcasecmp(); — similar_text(); — levenshtein().
1. strcmp()
Синтаксис следующий:
int strcmp(string str1, string str2)
Данная функция сравнивает 2 строки в PHP и возвращает: — 1, когда строка str1 лексикографически больше, чем str2; — 0, когда строки полностью совпадают; — 1, когда строка str1 лексикографически меньше str2.
Функция чувствительна к регистру, поэтому регистр оказывает влияние на результат сравнений (сравнение выполняется побайтово).
Пример работы
<? $str1 = "ttt"; $str2 = "tttttttttt"; echo("Result of strcmp ($str1 , $str2) is "); echo(strcmp ($str1, $str2)); echo("<br>"); echo("Result of strcmp ($str2, $str1)> is "); echo(strcmp ($str2, $str1)); echo("<br>"); echo("Result of strcmp ($str1 , $str1) is "); echo(strcmp ($str1,$str1)); ?>
А вот итог:
Result of strcmp (ttt , tttttttttt) is -1 Result of strcmp (tttttttttt, ttt) is 1 Result of strcmp (ttt, ttt) is 0
2. strncmp()
int strncmp(string str1, string str2, int len)
Данная функция отличается от
Что касается остального, то всё аналогично
3. strcasecmp()
int strcasecmp(string str1, string str2)
И эта функция сравнения работает так же, как и
4. strncasecmp()
int strncasecmp(string str1, string str2, int len)
5. strnatcmp()
int strnatcmp(string str1, string str2)
Выполняет «естественное» сравнение строк в PHP. Можно сказать, что функция имитирует сравнение строк человеком. Например, если мы будем сравнивать файлы pict20.gif, pict1.gif, pict2.gif, pict10.gif, то при обычной сортировке получим следующее расположение: pict1.gif, pict10.gif, pict2.gif, pict20.gif. А вот естественная сортировка с помощью
Регистр учитывается.
<? $array1 = $array2 = array("pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif"); echo("стандартная сортировка:"); echo ("<br>"); usort ($array1, strcmp); print_r ($array1); echo ("<br>"); echo("естественная сортировка:"); echo("<br>"); usort ($array2, strnatcmp); print_r ($array2); ?>
Результат работы в PHP:
стандартная сортировка: Array([0]=>pict1.gif [1]=> pict10.gif [2]=>pict2.gif [3]pict20.gif) естественная сортировка: Array([0]=>pict1.gif [1]=> pict2.gif [2]=>pict10.gif [3]pict20.gif)
6. strnatcasecmp()
int strnatcasecmp(string str1, string str2)
Выполняет вышеупомянутое «естественное» сравнение строк, но уже не учитывая регистр.
7. similar_text()
int similar_text(string str_first, string str_second [, double percent])
Определяет схожесть двух строк по алгоритму Оливера. Возвращается число символов, совпавших в строках str_second и str_first. Третий параметр необязателен — он передаётся по ссылке, плюс в нём сохраняется совпадение строк в процентах.
Пример:
<? $str1 = "Hello, world!"; $str2 = "Hello!"; $var = similar_text($str1,$str2); $var1 = similar_text($str1, $str2, &$tmp); // параметр $tmp передаем по ссылке echo("Результат выполнения функции similar_text() для строк $str и $str1 в числе символов:"); echo("<br>"); echo("$var"); echo("<br>"); echo("и в процентах:"); echo("<br>"); echo($tmp); // для вывода информации в % происходит обращение к $tmp ?>
Результат:
Результат выполнения функции similar_text() для строк Hello, world! и Hello! в числе символов: 6 и в %: 63.157894736842
8. levenshtein()
Определяет различие Левенштейна при сравнении двух строк в PHP.
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.
Сложность алгоритма — O(m*n), поэтому функция
Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!