Строки в PHP

Как и любой язык программирования, PHP поддерживает множество типов информации, к которым относятся строки. Они могут содержать слова, предложения и цифры; всегда заключаются в кавычки. Представить существование PHP без строк невозможно, поэтому важно правильно научиться работать со значениями, представленными в таком формате.

Благодаря особенности языка, при сравнении значений, если одно из них является цифрами в виде строки, а другое – числом, самостоятельно приводить переменные к определённому типу не нужно, и такая операция все равно успешно выполнится. Этот момент стоит учесть новичкам, начавшим изучать PHP после любого другого среди абсолютного большинства языков программирования: здесь с 1, «1» и (int)(true) можно работать вместе без каких-либо сложностей.

Самое главное

Строки называются словом string. Оно часто встречается в англоязычных документациях, поэтому важно запомнить этот термин вместе со следующими:

array – массив;

object – объект;

integer – целое число;

float – дробь или число с дробью через точку;

function – функция;

class – класс.

Для вывода строки на экран подойдут структурные единицы в виде echoи print. Если нужно «вытащить» значение переменной, следует задействовать функцию var_dump(). Задействовать её следует лишь для отладки, поскольку она отображает информацию в формате «как есть», что может показаться непонятным пользователям программы.

Запись строки

Чтобы представить в качестве значения переменной строку, можно воспользоваться одним из четырёх вариантов записи:

  • секунды;
  • кавычки;
  • heredoc;
  • nowdoc.

Секунды

Здесь всё очень просто – в начале строки ставится символ одинарной кавычки ‘, и точно такой же знак подставляется в конец. Внедрить переменную внутри строки не получится: придётся её разорвать оператором добавления в виде точки.

Если строка содержит знак-секунду, который требуется отобразить, то во избежание ошибочного интерпретирования в качестве закрывающего символа понадобится добавить знак экранирования: обратный слэш\. Он используется не только в этом деле и выполняет следующие роли:

  • \n– новая строка;
  • \r – возврат каретки;
  • \t – горизонтальная табуляция;
  • \v – вертикальная табуляция;
  • \e– знак ESC;
  • \f– смена страницы;
  • \\– одна косая черта;
  • \$– доллар (в противном случае может интерпретироваться, как вызов переменной);
  • \» – двойная кавычка.

Кавычки

Данный вариант записи похож на предыдущий способ записи своей простотой, но отличается доступностью задействования переменных внутри без знака «.» (хотя он тоже поддерживается). Другими словами, можно внутри строки написать название переменной вместе с символом доллара и она будет интегрирована.

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

Heredoc

Сильно отличающийся от двух вышеописанных вариант в основном задействуется в работе с текстом, содержащим множество разделений строк на абзацы. Начинается символами <<<EOD, а заканчивается группой знаков >>>.

Важно учесть, что перед закрывающим символом не должно стоять никаких других знаков:>>> должны быть размещены на отдельной строке. Не допускаются даже отступы, добавляемые пробелами или табуляцией.
По принципу работы Heredoc похож на запись текста в двойных кавычках-«лапках». Внутри Heredoc также можно интегрировать переменные, все правила работы с ними сохраняются. Экранировать кавычки при их вставке сюда не потребуется, в чём проявляется ключевое достоинство этого формата записи.

Nowdoc

Ещё более «экзотичная» форма записи. По своему типу записи похожа на Heredoc, а по обработке переменных– на ввод внутри одинарных кавычек(она здесь не производится). Невозможно интегрировать ни переменные, ни какие-либо функции: все они отобразятся просто в текстовом формате.

Записи в Nowdoc начинаются последовательностями<<<‘EOT’, а заканчиваются на EOT;. Как и в случае с вышеупомянутым Heredoc, комбинация знаков, отвечающая окончание записи, должна находиться на отдельной строке и не иметь никаких знаков возле себя, в том числе табуляции и пробелов, используемых для написания структурированного кода. Проще всего описать Nowdoc, как смесь способа записи с помощью секунд и Heredoc.

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

Строки могут сравниваться посредством комбинаций if-elseif-else, причём как и в виде переменных, так и посредством интеграции внутрь подобных конструкций. Их можно сравнить и с числами, при этом самостоятельно указывать формат данных не понадобится.

Для того, чтобы произвести такую же операцию со значениями вида Булев тип (самым простым форматом, который поддерживает только значения true либо false), понадобится привести их к целому числу посредством (int). В таком случае false будет равен 0, а true– 1 (учтите, что это не знак «минус», а тире, указанное для соблюдения правил пунктуации в статье).

В вопросе сравнения строк может производиться не только их сравнение на полное соответствие – есть набор весьма полезных функций для этих действий

Функции сравнения

Подсчитать длину строки поможет strlen(), для которой внутри скобок достаточно указать строку либо имя переменной.Результатом выполнения станет целое число, показывающее число символов с учётом пробелов. При работе с подобными функциями следует не забывать о том, что кроме проверки на соответствие, проводимой двумя знаками равно (==), можно задействовать и другие операторы: например, «больше», «меньше».

Установка проверок по strlen() очень полезна при обработке отправленных пользователем данных, позволяя задавать минимальные и максимальные ограничения по длине. strlen() возвращает данные о знаках, входящих в строку, только если они написаны латиницей.

Если требуется обработать кириллицу, стоит задействовать mb_strlen(). Для функции обязательно указание кодировки вручную либо посредством скриптов, иначе в логах появится запись вида E_WARNING, нарушающая «чистоту»кода. Список всех поддерживаемых mb_strlen() кодировок представлен на следующей странице официальной документации: https://www.php.net/manual/en/mbstring.supported-encodings.php.

В определении позиции строки относительно начала поможет strpos(). Для неё отсчёт идёт с нуля. Изначально эта функция и создавалась для данной цели, однако её можно также задействовать для определения наличия определённого слова, словосочетания, символа или предложения внутри какой-либо строки. Если же сервер работает на PHP 8, то для проверки наличия подстроки в строке логичнее использовать str_contains(), которая возвращает true либо false.

Если подставить к str_contains() пустую строку, всегда будет возвращено значение true. В восьмой спецификации появились также функции str_ends_with() и str_starts_with(), проверяющие, какими символами заканчиваются и начинаются строки.

Замена строк

Заменить символы внутри строки позволяет функция str_replace(), которая обрабатывает все совпадения знаков или комбинации, указанной пользователем, внутри строки. Если значение, которым будет заменяться оригинал, неизвестно и доступно для вычисления только сложным образом, следует задействовать preg_replace()– функцию, обеспечивающую замену на основе регулярных выражений.

Все функции сregexвсегда выполняются медленнее, чем те, что предполагают работу со string.Если это некритично, то аналогом str_replace() в виде регулярного выражения будет заключение слова между обычными слэшами.

Также можно провести замену строчных букв на прописные и наоборот:для этого следует использовать strtoupper() и strtolower() соответственно. Для обработки кириллицы подойдут: mb_strtoupper(), mb_strtolower(). Учтите, что две последние функции работают очень медленно: обработка среднего по длине абзаца на немецком языке заняла 11 секунд, в то время как смена регистра посредством SQL провелась примерно в два раза быстрее.

Вывод строк

В отображении строк нет ничего сложного: оно производится посредством echoи print. Обратите внимание, что для них не требуется указывать значение в круглых скобках, поскольку это – не функции, а структурные единицы языка (аналогично include, requireи некоторым другим командам).

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

echo и print практически одинаковы, но последний отличается от первого возможностью принятия лишь одного аргумента и возвратом 1 в любом случае, даже еслиstringпуст.

Примеры использования

Вывод строки

Этот код выведет предложение на экран браузера.

<?php
$string = «В чащах юга жил-был цитрус… — да, но фальшивый экземпляръ!»;
echo $string;

Запись в браузерную консоль

PHP не может работать на непосредственно клиентской стороне, но всё же с его помощью можно сгенерировать JS-код для задействования на пользовательском устройстве.

<?php
$string = «В чащах юга жил-был цитрус… — да, но фальшивый экземпляръ!»;
echo»<script>console.log(‘».$string.»‘);</script>»;

Смена регистра

Эта функция сделает текст состоящим полностью из заглавных букв:

<?php
$string = «an inspired calligrapher can create pages of beauty using stick ink, quill, brush, pick-axe, buzz saw, or even strawberry jam.»;
$string_uppercase = strtoupper($string);
echo $string_uppercase;

А эта – превратит все знаки в строчные:

<?php
$string = «SPHINX OF BLACK QUARTZ, JUDGE MY VOW»;
$string_lowercase = strtolower($string);
echo $string_lowercase;

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *