Практика PHP: сравнение строк

PHP неплохо ориентирован на обработку информации. Синтаксис языка представлен полнофункциональным набором функций сравнения, обработки строк, операторами сравнения.

php сравнение строк

Любой алгоритм - последовательность выборов и действий. Но прежде чем сделать выбор, нужно что-то сравнить с чем-то. Строки - самый емкий, эффективный и практичный механизм управления алгоритмом. Строки - вариант представления данных. А данные - это главный предмет "заботы" любого алгоритма.

Обычная логика "сравнение-действие"

В общем случае язык динамической типизации не делает особых отличий в данных, например, на PHP сравнение строки и числа мало чем отличается. Число - это тоже строка, когда в ней содержатся только цифры, точка и нет ни одного символа, который не используется для представления числа в любой его форме (математическая нотация).


В случае контенкации число автоматом сливается со строкой без лишних вопросов и никаких скрытых ошибок, даже если функция gettype () дает 'integer' или 'double'.

php сравнение двух строк

Однако есть разница между использованием функции is_int () и is_numeric (). Первая дает истину, когда параметр является только целым числом, вторая, когда любым числом или числовой строкой (переменная имеет тип 'string', но содержит все, что предусмотрено математической нотацией).

Этот простой пример - хороший образец, как на PHP операторы сравнения строк ('==', '===', '!=', ...) могут подарить множество неожиданностей. Переменные могут менять свой тип, они не всегда числа, но почти всегда их можно привести к строке. В крайнем случае - это будет пустая строка.


php операторы сравнения строк

На основании сказанного, на PHP функция сравнения строк самая популярная. Какую именно выбрать, решать разработчику. Доступна масса вариантов вплоть до регулярных выражений.

Границы доступного функционала

PHP-сравнение двух строк хорошо "делает" функция strpos () - самый дешевый, верный и практичный вариант. Если результат этой функции число, то однозначно одна строка равна другой или одна входит в другую.

Кардинально противоположный, но тоже абсолютно верный подход - использование регулярных выражений.

Авторский пример - это не картинка

Если вызов функции $cResult = scCheckFileName($cStr) даст 'true', значит, строка является именем вордовского файла. У него будет только один вариант расширения '.docx' и никаких символов в имени: только буквы, цифры и знаки '_', '-'.

Функция легко может быть переделана на другие виды файлов: $cPtr = '/^([a-zA-Z...0-9\-\_]{4,239})\.(html|js|css|png|jpg|docx|txt){1}$/u'. Такой вариант проверки строки расширяет диапазон загружаемых (например, на PHP сравнение строк применено "для загрузки файлов на сервер, без единого шанса на ошибку ввода") на html, js, css, ...

Использование strpos () и preg_match () - крайности. Они не имеют прямого отношения к вопросу сравнения срок. Но ведь вопрос алгоритма - это вопрос применения комбинации стилей, использование всех возможностей для достижения надежного и правильного результата.

Функционал PHP: сравнение строк

Арсенал языка по сравнению строк - это не только функции чистого сравнения, но и сочетание с поиском или заменой непосредственно. Не всегда действие должно совпадать со сравнением, поскольку последнее не обязательно ведет к изменению какой-либо строки. Часто нужно выбрать ту или иную ветку алгоритма.


Обычный вариант PHP: сравнение строк осуществляет функция int strcmp (s1, s2).

Результат функции:

  • 0 - строки равны;
  • -1 - первая строка меньше второй;
  • 1 - первая строка больше второй.

На практике это означает, что входит первая строка во вторую, от чего функция PHP (сравнение строк) принимает решение. Более ограниченный вариант strpos (), поскольку в последнем случае можно знать позицию вхождения.

Функция strcmp () - регистрозависима. Если нужно сравнить строки без учета регистра символов, PHP предлагает воспользоваться strcasecmp(). Синтаксис аналогичен.

На практике часто требуется работать не со всей строкой, а только с ее частью. Для этого в набор функций PHP (сравнение строк) входит strncmp (s1, s2, N). Третий параметр указывает выполнить сравнение только N-байт. Результат аналогичен strcmp ().

Массивы, строки и сравнение

Данные практически всегда представлены строками. Если рассматривать массивы, объекты, или информационные структуры, то это просто различные варианты комбинации более простых строковых структур.

php функция сравнения строк

Строковые массивы и строки могут быть представлены взаимодополняющим образом. Трансформация массива в строку функцией implode(array, symbol), например: $margins1 = implode(', ', $style->getInnerMargin()); ... работа алгоритма/пользователя ...; $margins2 = implode(', ', $style->getInnerMargin()) позволяет слить все позиции объекта в строку позиций.

Затем можно выполнить PHP-сравнение строк и за один раз: $check = strcmp ($margins1, $margins2) и убедиться, что алгоритм или пользователь что-то изменил (или нет). Если выполнять сравнение обычным образом, то придется перебирать элементы массивов. Это происходит дольше и выглядит более громоздко.

Объекты и строки

Еще более эффектное использование PHP (сравнение строк) может быть реализовано посредством объектно-ориентированных идей.

Современное представление об объектах предполагает наличие у них свойств и методов. Первые обычно представлены числами, строками, массивами и другими объектами. Вторые зачастую включают в себя методы записи (put) в строку и восстановления из строки (get).

В отличие от массивов, объект выполняет работу со своими свойствами и взаимодействует с другими объектами. Объект "компетентен" в том, какие его свойства имеют реальное значение для алгоритма, программы в целом.

php сравнение строки и числа

Этот момент дает основание и возможность при записи фиксировать в строку только нужную информацию, а при восстановлении из строки восстанавливать все рабочие свойства в нужное состояние. Обычно в любом объекте есть информация существенная и рабочая (временная). Реализация такой идеи позволяет экономить не только память, дисковое пространство, записи базы данных, но и делает возможным сравнение строк более простыми и точными средствами.

Синтаксис и семантика

PHP динамично развивается, и его функционал как в плане сравнения строк, так и в отношении их обработки постоянно совершенствуется. Однако ничто не мешает разработчику перенести центр тяжести в область семантики.

Несомненно, функционал хорош, но его использование можно перенести в смысловую часть кода, в объекты. Когда алгоритм представляется как система взаимодействия объектов, это выглядит значительно лучше, чем последовательность сравнений и действий в прямом последовательном, классическом стиле.

Узнаем как делается сортировка массивов?
Что такое сортировка массивов, для чего она нужна? Сложно ли ее делать на языке PHP и что для этого надо? Как делается сортировка двумерного массива? Ответы на эти вопросы в статье.
далее
PHP implode: преобразование одномерных и многомерных массивов в ...
Гибкость и многовариантность применения функции php implode(), объединение значений одномерных и многомерных массивов в строки, манипулирование последовательностью вывода текста с помощью числовых индексов, применение array_map() и array_column() ...
далее
PHP: время выполнения скрипта на практике
Время выполнения скрипта всегда имеет значение, а в некоторых случаях особенное. Если сайт или отдельный его элемент не функционирует как требуется, имеет смыл оценить время его исполнения и определить проблемные участки кода.
далее
Использование функции trim (PHP)
Используемая кодировка символов имеет важное значение. В любой кодировке есть код символа, есть его семантика для программиста и для пользователя.
далее
PHP: работа со строками. Строковые функции PHP
Статья рассчитана на начинающих изучать PHP: в ней описаны самые распространенные функции, связанные с работой со строками.
далее
Начинающим веб-программистам PHP: длина строки
Любой уважающий себя веб-программист должен знать язык РНР, который может использоваться для создания веб-страниц. Этот язык основан на С и С++, и поэтому в нём присутствует множество конструкций, характерных для этого языка. Например, в PHP длина строки возвращается функцией с таким же названием, как и в С. Эта статья рассказывает о строках, а также об операциях, которые можно выполнять с ними.
далее
Начинающим веб-программистам PHP: длина строки
Раствор для инъекций Мексидол: последние отзывы, инструкция к препарату и состав
Препарат «Мексидол» (отзывы отмечают, что медикамент помогает снять нервное напряжение, убрать головные боли и снизить холестерин) является современным антиоксидантом. Применяется для стимуляции мозгового кровообращения, положительно влияет на память. Организм после лечения «Мексидолом» становится более устойчив к недостатку кислорода. Используется для лечения взрослых, пожилых людей и детей.
далее
Раствор для инъекций Мексидол: последние отзывы, инструкция к препарату и состав
PHP (регулярное выражение) - определение. Примеры и проверка регулярных выражений
Многие начинающие Интернет-разработчики в качестве своего первого языка программирования выбирают PHP. Регулярное выражение является одним из самых мощных средств обработки текста и реализует невозможные на первый взгляд задачи.
далее
PHP (регулярное выражение) - определение. Примеры и проверка регулярных выражений
Противовирусный препарат Кагоцел: последние отзывы, инструкция к препарату
В осенне-весенний период активизируются вирусные заболевания: ОРВИ, грипп, парагрипп, ротавирусная, герпесная инфекция и другие. К счастью, существуют современные противовирусные лекарственные средства, которые можно использовать как в качестве профилактики, так и в качестве лечения. "Кагоцел" - одно из таких. Это очень популярное средство. Из этой статьи вы узнаете многое о "Кагоцеле": инструкцию по применению, отзывы, цену, аналоги, противопоказания к приему.
далее
Противовирусный препарат Кагоцел: последние отзывы, инструкция к препарату
PHP iconv: корректная кодировка строк
Вопрос кодировки - наиважнейший вопрос современного интернет-программирования. Проблемы создает сочетание браузера, HTML-страницы и базы данных. Возможны и другие ситуации, но эти самые частые и востребованные.
далее
PHP iconv: корректная кодировка строк