Все ленты — последние статьи

Функция strcmp() — сравнение строк.

Синтаксис функции strcmp():
int strcmp(string str1, string str2)
Эта функция сравнивает две строки — str1 и str2 и возвращает:

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

Лексикографический порядок последовательностей предполагает, что последовательность a!, предшествует последовательности b!,, если для некоторого s!, их начальные отрезки длины s!, равны, а (s+1)!,-ый член последовательности a!, меньше.

Примеры лексикографического порядка:

 

* последовательность чисел в любой системе счисления, записанных в фиксированной разрядной сетке (000, 001, 002, 003, 004, 005, …, 999)
* порядок слов в словаре. Предполагается, что буквы можно сравнивать, сравнивая их номера в алфавите. Тогда лексикографический порядок — это к примеру ААА, ААБ, ААВ, ААГ, …, ЯЯЯ.

Википедия.

Листинг № 1 — Пример сравнения строк учитывая регистр букв, с помощью функции strcmp().
<?php

// Пример 1

$str1 = "www";
$str2 = "wwwwwww";

echo strcmp($str1, $str2); // выведет на монитор число -4

// Пример 2

$str1 = "wwwwwww";
$str2 = "www";

echo strcmp($str1, $str2); // выведет на монитор число 4


// Пример 3

$str1 = "www";
$str2 = "www";

echo strcmp($str1, $str2); // выведет на монитор число 0


// Пример 4

$str1 = "Www";
$str2 = "www";

echo strcmp($str1, $str2); // выведет на монитор число -1


// Пример 5

$str1 = "AWww";
$str2 = "www";

echo strcmp($str1, $str2); // выведет на монитор число -1

// Пример 6

$str1 = "www";
$str2 = "aaa";

echo strcmp($str1, $str2); // выведет на монитор число 1

?>
На основе этой функции создадим программу для сравнения текста. Принцип работы (алгоритм, последовательность) следующий. Есть некая форма для ввода текста оригинала и есть вторая форма, для сравнения с оригиналом. Содержимое этих форм отправляем для сравнения в функцию strcmp().

Листинг № 2 — Программа для сравнения строк, текста или каких либо символов на сходство или различие (идентичность).
<?php

$str1 = trim($_POST['form1']); // форма один
$str2 = trim($_POST['form2']); // форма два

// если переменная button содержит значение "Сравнить"…
if($_POST['button']=="Сравнить")
{
//Сравниваем значения двух переменных.
// Если функция возвращает ноль — текст идентичен и срабатывает второй
// блок конструкции if, в противном случаи первый блок.
// Первый блок срабатывает только в том случаи, если значение в
// скобках if(TRUE) — истинно, все значения кроме нуля истины(TRUE),
// а ноль есть FALSE. Функция возвращает ноль при полной идентичности строк.
if(strcmp($str1, $str2))
{
echo "Текст не идентичен. " . strcmp($str1, $str2);
}
else
{
echo "Текст идентичен. " . strcmp($str1, $str2);
}

}

// Вывод на монитор форм для заполнения текстом
echo "<form name='form1' method='post' action=''>
Форма1
<br>
<textarea name='form1' cols='45' rows='5'>$str1 </textarea>
<br>
<br>
Форма2
<br>
<textarea name='form2' cols='45' rows='5'>$str2 </textarea>
<br>
<br>
<input type='submit' name='button' id='button' value='Сравнить'>
</form>";

?>

Листинг № 3 — Использование функции strcasecmp().
<?php

$var1 = "Hello";
$var2 = "hello";
echo strcasecmp($var1, $var2); // 0


$var1 = "4545";
$var2 = "4546";
echo strcasecmp($var1, $var2); // -1


$var1 = "Hello";
$var2 = "Good";
echo strcasecmp($var1, $var2); // 1

?>
Функция strcasecmp сравнивает две строки не учитывая регистр букв.

Если значение переменной $var1 меньше значения переменной $var2, возвращается -1
Если значение переменной $var1 больше значения переменной $var2, возвращается 1
Если значения переменных $var1 и $var2 равны, возвращается 0