0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>В PHP для сравнения строк используется несколько функций. В этой статье мы поговорим о том, как сравнить строки в<a>PHP</a>.</p>
1
<p>В PHP для сравнения строк используется несколько функций. В этой статье мы поговорим о том, как сравнить строки в<a>PHP</a>.</p>
2
<p>Итак, для сравнения можно использовать: - strcmp(); - strncmp(); - strcasecmp(); - strncasecmp(); - strnatcmp(); - strnatcasecmp(); - similar_text(); - levenshtein().</p>
2
<p>Итак, для сравнения можно использовать: - strcmp(); - strncmp(); - strcasecmp(); - strncasecmp(); - strnatcmp(); - strnatcasecmp(); - similar_text(); - levenshtein().</p>
3
<h2>1. strcmp()</h2>
3
<h2>1. strcmp()</h2>
4
<p>Синтаксис следующий:</p>
4
<p>Синтаксис следующий:</p>
5
int strcmp(string str1, string str2)<p>Данная функция сравнивает 2 строки в PHP и возвращает: - 1, когда строка<strong>str1</strong>лексикографически больше, чем<strong>str2</strong>; - 0, когда строки полностью совпадают; - 1, когда строка<strong>str1</strong>лексикографически меньше<strong>str2</strong>.</p>
5
int strcmp(string str1, string str2)<p>Данная функция сравнивает 2 строки в PHP и возвращает: - 1, когда строка<strong>str1</strong>лексикографически больше, чем<strong>str2</strong>; - 0, когда строки полностью совпадают; - 1, когда строка<strong>str1</strong>лексикографически меньше<strong>str2</strong>.</p>
6
<p>Функция<strong>чувствительна к регистру</strong>, поэтому регистр оказывает влияние на результат сравнений (сравнение выполняется побайтово).</p>
6
<p>Функция<strong>чувствительна к регистру</strong>, поэтому регистр оказывает влияние на результат сравнений (сравнение выполняется побайтово).</p>
7
<p>Пример работы strcmp() в PHP:</p>
7
<p>Пример работы strcmp() в PHP:</p>
8
<? $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)); ?><p>А вот итог:</p>
8
<? $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)); ?><p>А вот итог:</p>
9
Result of strcmp (ttt , tttttttttt) is -1 Result of strcmp (tttttttttt, ttt) is 1 Result of strcmp (ttt, ttt) is 0<h2>2. strncmp()</h2>
9
Result of strcmp (ttt , tttttttttt) is -1 Result of strcmp (tttttttttt, ttt) is 1 Result of strcmp (ttt, ttt) is 0<h2>2. strncmp()</h2>
10
int strncmp(string str1, string str2, int len)<p>Данная функция отличается от strcmp() прежде всего тем, что сравнивает первые<strong>len</strong>байтов, т. е. начала строк. А когда len меньше длины наименьшей из строк, строки сравниваются целиком.</p>
10
int strncmp(string str1, string str2, int len)<p>Данная функция отличается от strcmp() прежде всего тем, что сравнивает первые<strong>len</strong>байтов, т. е. начала строк. А когда len меньше длины наименьшей из строк, строки сравниваются целиком.</p>
11
<p>Что касается остального, то всё аналогично strcmp(), включая чувствительность к регистру.</p>
11
<p>Что касается остального, то всё аналогично strcmp(), включая чувствительность к регистру.</p>
12
<h2>3. strcasecmp()</h2>
12
<h2>3. strcasecmp()</h2>
13
int strcasecmp(string str1, string str2)<p>И эта функция сравнения работает так же, как и strcmp(). Разница лишь в том, что не учитывается регистр букв.</p>
13
int strcasecmp(string str1, string str2)<p>И эта функция сравнения работает так же, как и strcmp(). Разница лишь в том, что не учитывается регистр букв.</p>
14
<h2>4. strncasecmp()</h2>
14
<h2>4. strncasecmp()</h2>
15
int strncasecmp(string str1, string str2, int len)<p>strncasecmp() сравнивает начала строк, не учитывая регистр.</p>
15
int strncasecmp(string str1, string str2, int len)<p>strncasecmp() сравнивает начала строк, не учитывая регистр.</p>
16
<h2>5. strnatcmp()</h2>
16
<h2>5. strnatcmp()</h2>
17
int strnatcmp(string str1, string str2)<p>Выполняет "естественное" сравнение строк в PHP. Можно сказать, что функция имитирует сравнение строк человеком. Например, если мы будем сравнивать файлы pict20.gif, pict1.gif, pict2.gif, pict10.gif, то при обычной сортировке получим следующее расположение: pict1.gif, pict10.gif, pict2.gif, pict20.gif. А вот естественная сортировка с помощью strnatcmp() даст результат, который более привычен человеку: pict1.gif, pict2.gif, pict10.gif, pict20.gif.</p>
17
int strnatcmp(string str1, string str2)<p>Выполняет "естественное" сравнение строк в PHP. Можно сказать, что функция имитирует сравнение строк человеком. Например, если мы будем сравнивать файлы pict20.gif, pict1.gif, pict2.gif, pict10.gif, то при обычной сортировке получим следующее расположение: pict1.gif, pict10.gif, pict2.gif, pict20.gif. А вот естественная сортировка с помощью strnatcmp() даст результат, который более привычен человеку: pict1.gif, pict2.gif, pict10.gif, pict20.gif.</p>
18
<p>Регистр учитывается.</p>
18
<p>Регистр учитывается.</p>
19
<? $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); ?><p>Результат работы в PHP:</p>
19
<? $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); ?><p>Результат работы в PHP:</p>
20
стандартная сортировка: 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)<h2>6. strnatcasecmp()</h2>
20
стандартная сортировка: 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)<h2>6. strnatcasecmp()</h2>
21
int strnatcasecmp(string str1, string str2)<p>Выполняет вышеупомянутое "естественное" сравнение строк, но уже не учитывая регистр.</p>
21
int strnatcasecmp(string str1, string str2)<p>Выполняет вышеупомянутое "естественное" сравнение строк, но уже не учитывая регистр.</p>
22
<h2>7. similar_text()</h2>
22
<h2>7. similar_text()</h2>
23
int similar_text(string str_first, string str_second [, double percent])<p>Определяет схожесть двух строк по<strong>алгоритму Оливера</strong>. Возвращается число символов, совпавших в строках<strong>str_second</strong>и<strong>str_first</strong>. Третий параметр необязателен - он передаётся по ссылке, плюс в нём сохраняется совпадение строк в процентах.</p>
23
int similar_text(string str_first, string str_second [, double percent])<p>Определяет схожесть двух строк по<strong>алгоритму Оливера</strong>. Возвращается число символов, совпавших в строках<strong>str_second</strong>и<strong>str_first</strong>. Третий параметр необязателен - он передаётся по ссылке, плюс в нём сохраняется совпадение строк в процентах.</p>
24
<p>Пример:</p>
24
<p>Пример:</p>
25
<? $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 ?><p>Результат:</p>
25
<? $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 ?><p>Результат:</p>
26
Результат выполнения функции similar_text() для строк Hello, world! и Hello! в числе символов: 6 и в %: 63.157894736842<h2>8. levenshtein()</h2>
26
Результат выполнения функции similar_text() для строк Hello, world! и Hello! в числе символов: 6 и в %: 63.157894736842<h2>8. levenshtein()</h2>
27
<p>Определяет<strong>различие Левенштейна</strong>при сравнении двух строк в PHP.</p>
27
<p>Определяет<strong>различие Левенштейна</strong>при сравнении двух строк в PHP.</p>
28
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)<p><strong>Различие Левенштейна</strong>- минимальное количество символов, которое нужно заменить, удалить или вставить, чтобы превратить строку str1 в str2.</p>
28
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)<p><strong>Различие Левенштейна</strong>- минимальное количество символов, которое нужно заменить, удалить или вставить, чтобы превратить строку str1 в str2.</p>
29
<p>Сложность алгоритма - O(m*n), поэтому функция levenshtein() в PHP работает быстрее, чем similar_text(). Обратите внимание, что у функции 3 вида синтаксиса.</p>
29
<p>Сложность алгоритма - O(m*n), поэтому функция levenshtein() в PHP работает быстрее, чем similar_text(). Обратите внимание, что у функции 3 вида синтаксиса.</p>
30
<p><em>Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!</em></p>
30
<p><em>Хотите знать больше? Записывайтесь на курс "Backend-разработчик на PHP"!</em></p>
31
31