Строки в PHP и работа с ними

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

Как создать строку

Строку можно записать в одинарных или двойных кавычках:

<?php
$single = 'Привет, PHP!';
$double = "Привет, PHP!";

echo $single; // Вывод: Привет, PHP!
echo $double; // Вывод: Привет, PHP!

Разница проявляется, когда внутри строки есть переменные или спецсимволы. Двойные кавычки «раскрывают» переменные и понимают \n (перевод строки), \t (табуляция). Одинарные выводят всё как есть:

<?php
$lang = "PHP";

echo "Изучаем $lang\n"; // Вывод: Изучаем PHP (и перевод строки)
echo 'Изучаем $lang\n'; // Вывод: Изучаем $lang\n

Если в строке нет переменных, многие разработчики используют одинарные кавычки — так сразу видно, что строка «простая».

Конкатенация — склеивание строк

Строки соединяют оператором точка .:

<?php
$first = "Code";
$second = "Chick";

$brand = $first . $second;
echo $brand; // Вывод: CodeChick

$greeting = "Привет, " . $brand . "!";
echo $greeting; // Вывод: Привет, CodeChick!

Чтобы дописать текст в конец существующей строки, есть короткий оператор .=:

<?php
$message = "Заказ принят";
$message .= ". Ожидайте доставку.";

echo $message; // Вывод: Заказ принят. Ожидайте доставку.

Длина строки и доступ к символам

Функция strlen() возвращает длину строки в байтах, а для текста на русском нужна mb_strlen() — она считает именно символы:

<?php
$text = "Привет";

echo strlen($text);    // Вывод: 12 (каждая кириллическая буква — 2 байта)
echo mb_strlen($text); // Вывод: 6

Запомните правило: для русского текста всегда используйте функции с префиксом mb_ (multibyte) — mb_strlen(), mb_strtoupper(), mb_substr().

К отдельному символу строки можно обратиться по индексу в квадратных скобках. Нумерация начинается с нуля:

<?php
$word = "PHP";
echo $word[0]; // Вывод: P
echo $word[2]; // Вывод: P

Полезные функции для работы со строками

Изменение регистра

<?php
$title = "язык php";

echo mb_strtoupper($title); // Вывод: ЯЗЫК PHP
echo mb_strtolower("КРИК"); // Вывод: крик
echo ucfirst("hello");      // Вывод: Hello

Поиск и замена

Функция str_contains() (появилась в PHP 8) проверяет, есть ли подстрока в строке, а str_replace() заменяет одно на другое:

<?php
$email = "[email protected]";

var_dump(str_contains($email, "@")); // Вывод: bool(true)

$masked = str_replace("user", "***", $email);
echo $masked; // Вывод: ***@codechick.io

Есть и родственные функции PHP 8: str_starts_with() и str_ends_with():

<?php
var_dump(str_starts_with("https://codechick.io", "https://")); // Вывод: bool(true)
var_dump(str_ends_with("photo.png", ".png"));                  // Вывод: bool(true)

Вырезание части строки

mb_substr() возвращает фрагмент строки: первый аргумент — строка, второй — с какого символа начать, третий — сколько символов взять:

<?php
$text = "Программирование";

echo mb_substr($text, 0, 8);  // Вывод: Программ
echo mb_substr($text, 3);     // Вывод: граммирование
echo mb_substr($text, -5);    // Вывод: вание (отсчёт с конца)

Удаление пробелов

trim() убирает пробелы и переводы строк по краям — обязательная обработка данных из форм:

<?php
$input = "   [email protected]  ";
echo trim($input); // Вывод: [email protected]

Разбиение и сборка

explode() разбивает строку в массив по разделителю, implode() собирает обратно:

<?php
$csv = "PHP,JavaScript,Python";
$languages = explode(",", $csv);

print_r($languages);
// Вывод: Array ( [0] => PHP [1] => JavaScript [2] => Python )

echo implode(" | ", $languages);
// Вывод: PHP | JavaScript | Python

Сводная таблица функций

ФункцияЧто делает
mb_strlen()длина строки в символах
mb_strtoupper() / mb_strtolower()верхний / нижний регистр
str_contains()проверяет наличие подстроки
str_replace()заменяет подстроку
mb_substr()вырезает фрагмент
trim()убирает пробелы по краям
explode() / implode()строка → массив и обратно

Что мы узнали

  • Строки записываются в одинарных или двойных кавычках; двойные раскрывают переменные и \n.
  • Строки склеивают оператором ., а дописывают через .=.
  • Для русского текста используем функции с префиксом mb_.
  • В PHP 8 появились удобные str_contains(), str_starts_with(), str_ends_with().
  • trim(), str_replace(), mb_substr(), explode() и implode() покрывают большинство задач со строками.
Проверьте себя
1. Что выведет `echo mb_strlen("Привет");` в PHP?
A12
B6
C7
DОшибка
2. Какой оператор используется для конкатенации строк в PHP?
A+
B&
C.
D~
3. Почему для работы с русским текстом нужна функция `mb_substr()`, а не `substr()`?
Asubstr() работает медленнее
Bmb_substr() понимает многобайтовые символы (кириллицу), а substr() считает байты
Csubstr() устарела и удалена в PHP 8
Dmb_substr() требует меньше памяти
4. Какая функция PHP 8 проверяет, начинается ли строка с заданной подстроки?
Astr_contains()
Bstr_starts_with()
Cstr_begin()
Dstarts()

Закрепите практикой

Задачи с автоматической проверкой — решайте прямо здесь, не уходя из учебника.

Поддержать проект