PHP уроки
ПРОСТО самая лучшая обучалка PHP!
  • Студия LPHPRU
  • Уроки PHP
  • Контакты
  • Помощь
Меню
  • PHP - с чего начать?
  • Уроки PHP
  • Функции PHP
  • Массивы
  • Denwer
  • MySQL
  • Информация
  • Dreamweaver уроки
  • JQuery уроки
  • Галерея
Календарь
Январь (2021)
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
В продаже

  • Что нового?

    • Тест №2
    • Тест №1 для разработчиков
    • PHP 5.6 RC1
    • SQL. Как cкопировать данные одной колонки в другую, в той же таблице
    • GRUB изменить порядок загрузки OS в Linux
    • SSH - вход на сервер без ввода пароля
    • PhpMyAdmin - проблема с загрузкой большого файла на сервер
  • Комментарии

    • тут нечего не понятно
    • Может уже пора на WebStorm переходит...
    • Здравствуйте. 10 лет пользуюсь др...
    • Была такая проблема, решалась пе...
    • Возможно с течением времени этот...
  • TOP-5

    • Метод POST (2939569)
    • Привет, МИР! (906979)
    • Метод GET (661683)
    • Операторы (601627)
    • Firefox уже запущен, но не отвечает... (346896)

Сравнение двух PHP скриптов, или сравнение строк.

Главная » Функции PHP » Сравнение двух PHP скриптов, или сравнение строк.
PHP урок № 237

Функция 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

Урок закончен.

SETTER © LPHP.RU
Администрация сайта
04.12.2009 23:56:57

Обсудить на форуме.
Понравился урок? Не пропусти следующий!
Рекомендованные уроки этого раздела:
  • Explode
  • Размер изображения
  • Регистр букв
  • Пользовательские функции

Напишите свой комментарий
Ваше имя
Сообщение
Введите цифры с картинки:
 

Комментарии

Игорь 29.12.2011 12:09:02
А зачем тут, функция trim()? и if() с $_POST[\'button\'] ==\'отправить\'? Ведь не несут никакого смысла кроме как дополнительного, без них все хорошо работает?
SETTER 29.12.2011 12:24:04
Функция trim() - убирает пробелы перед строкой и после, так что в ней есть смысл. По поводу "Отправить" - вообще не понял, в уроке такой кнопки нет. Если вы имели в виду кнопку "Сравнить", то это своего рода идентификатор формы с которой отправлен запрос и к тому же некоторая защита скрипта.
Игорь 29.12.2011 17:04:28
Убирает пробелы перед строкой я понял, прочитал. Но это же не столь важно для данного скрипта. Или важно? Потому как убрав эту функцию у меня скрипт работает так же. \"Сравнить\" да перепутал. Но без него тоже все работает. И для чего в данном примере нужен идентификатор формы? И как он защищает скрипт?
SETTER 30.12.2011 10:04:30
По поводу trim - скажем так, это для чистоты данных. Строка "good" и строка " good " имеют разное кол-во символов (4 и 6). По кнопке. Скрипт сработает только если кнопка имеет имя "Сравнить", ни какое другое. Ваш обработчик формы, не виден из сети и какие защитные функции вы включили в свой код, ни кто не знает. Чем их больше тем сложнее взломать. Это как пароль, чем больше знаков тем больше вариантов подбора. Регистрируйтесь на форуме если есть вопросы, обсудим.
  • Яндекс.Метрика Здесь находится аттестат нашего WM идентификатора 185571665285
  • "LPHPRU" © 2009-2021