HTML Diff
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 &lt;? $str1 = "ttt"; $str2 = "tttttttttt"; echo("Result of strcmp ($str1 , $str2) is "); echo(strcmp ($str1, $str2)); echo("&lt;br&gt;"); echo("Result of strcmp ($str2, $str1)&gt; is "); echo(strcmp ($str2, $str1)); echo("&lt;br&gt;"); echo("Result of strcmp ($str1 , $str1) is "); echo(strcmp ($str1,$str1)); ?&gt;<p>А вот итог:</p>
8 &lt;? $str1 = "ttt"; $str2 = "tttttttttt"; echo("Result of strcmp ($str1 , $str2) is "); echo(strcmp ($str1, $str2)); echo("&lt;br&gt;"); echo("Result of strcmp ($str2, $str1)&gt; is "); echo(strcmp ($str2, $str1)); echo("&lt;br&gt;"); echo("Result of strcmp ($str1 , $str1) is "); echo(strcmp ($str1,$str1)); ?&gt;<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 &lt;? $array1 = $array2 = array("pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif"); echo("стандартная сортировка:"); echo ("&lt;br&gt;"); usort ($array1, strcmp); print_r ($array1); echo ("&lt;br&gt;"); echo("естественная сортировка:"); echo("&lt;br&gt;"); usort ($array2, strnatcmp); print_r ($array2); ?&gt;<p>Результат работы в PHP:</p>
19 &lt;? $array1 = $array2 = array("pict10.gif", "pict2.gif", "pict20.gif", "pict1.gif"); echo("стандартная сортировка:"); echo ("&lt;br&gt;"); usort ($array1, strcmp); print_r ($array1); echo ("&lt;br&gt;"); echo("естественная сортировка:"); echo("&lt;br&gt;"); usort ($array2, strnatcmp); print_r ($array2); ?&gt;<p>Результат работы в PHP:</p>
20 стандартная сортировка: Array([0]=&gt;pict1.gif [1]=&gt; pict10.gif [2]=&gt;pict2.gif [3]pict20.gif) естественная сортировка: Array([0]=&gt;pict1.gif [1]=&gt; pict2.gif [2]=&gt;pict10.gif [3]pict20.gif)<h2>6. strnatcasecmp()</h2>
20 стандартная сортировка: Array([0]=&gt;pict1.gif [1]=&gt; pict10.gif [2]=&gt;pict2.gif [3]pict20.gif) естественная сортировка: Array([0]=&gt;pict1.gif [1]=&gt; pict2.gif [2]=&gt;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 &lt;? $str1 = "Hello, world!"; $str2 = "Hello!"; $var = similar_text($str1,$str2); $var1 = similar_text($str1, $str2, &amp;$tmp); // параметр $tmp передаем по ссылке echo("Результат выполнения функции similar_text() для строк $str и $str1 в числе символов:"); echo("&lt;br&gt;"); echo("$var"); echo("&lt;br&gt;"); echo("и в процентах:"); echo("&lt;br&gt;"); echo($tmp); // для вывода информации в % происходит обращение к $tmp ?&gt;<p>Результат:</p>
25 &lt;? $str1 = "Hello, world!"; $str2 = "Hello!"; $var = similar_text($str1,$str2); $var1 = similar_text($str1, $str2, &amp;$tmp); // параметр $tmp передаем по ссылке echo("Результат выполнения функции similar_text() для строк $str и $str1 в числе символов:"); echo("&lt;br&gt;"); echo("$var"); echo("&lt;br&gt;"); echo("и в процентах:"); echo("&lt;br&gt;"); echo($tmp); // для вывода информации в % происходит обращение к $tmp ?&gt;<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