Урок 14: Работа со строками в PHP

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

Мы разберем основные функции для работы со строками, научимся их объединять (конкатенировать) и решим несколько практических задач, чтобы закрепить материал.

Что такое строка в PHP?

В PHP строка это последовательность символов, например: "Привет, мир!"'12345' или даже многострочный текст. Строки можно создавать в одинарных (' ') или двойных (" ") кавычках. Разница между ними есть, и мы её обсудим, но сначала — к основам.

Основные функции для обработки строк

PHP предлагает десятки функций для работы со строками. Я расскажу о самых полезных и часто используемых.

1. strlen() — длина строки

Функция strlen() возвращает количество символов в строке.
Пример:

$text = "Hello, Максим!";
echo strlen($text); // Выведет 14 (пробелы и знаки тоже считаются)

Для кириллицы в кодировке UTF-8 используйте mb_strlen(), иначе символы будут считаться некорректно:

$text = "Привет";
echo mb_strlen($text, 'UTF-8'); // Вернёт 6

2. substr() — получение подстроки

substr() позволяет вырезать часть строки.
Синтаксис:
substr(строка, начало [, длина])

Примеры:

$text = "Программирование на PHP";
echo substr($text, 0, 12); // "Программирова"
echo substr($text, -3);    // "PHP" (отрицательное начало отсчитывает с конца)

3. str_replace() — замена текста

Эта функция заменяет все вхождения подстроки в строке.
Синтаксис:
str_replace(что_заменить, на_что_заменить, строка)

Пример:

$text = "Я люблю Java!";
$newText = str_replace("Java", "PHP", $text);
echo $newText; // "Я люблю PHP!"

4. trim() — удаление пробелов

Удаляет пробелы, табы и переносы строк в начале и конце строки:

$text = "   Привет, мир!   ";
echo trim($text); // "Привет, мир!"

5. explode() и implode() — разделение и объединение

  • explode() разбивает строку в массив по разделителю.
  • implode() объединяет элементы массива в строку.
$csv = "Яблоки,Бананы,Апельсины";  
$array = explode(",", $csv);  
print_r($array); // Array ( [0] => Яблоки [1] => Бананы [2] => Апельсины )  

$newText = implode(" и ", $array);  
echo $newText; // Выведет: Яблоки и Бананы и Апельсины  

6. strpos() — поиск подстроки

Ищет позицию первого вхождения подстроки:

$text = "Привет, Максим!";
$position = strpos($text, "Максим");
echo $position; // 8 (позиция начинается с 0)

7. strtolower() и trtoupper() — регистр символов

  • strtolower() преобразует строку в нижний регистр:
    echo strtolower("PHP ЛУЧШИЙ!"); // "php лучший!"
  • strtoupper() — в верхний:
    echo strtoupper("php лучший!"); // "PHP ЛУЧШИЙ!"

8. htmlspecialchars() — экранирование HTML

Заменяет специальные символы на HTML-сущности. Это важно для безопасности!

$userInput = "<script>alert('Взлом!');</script>";
echo htmlspecialchars($userInput); // Безопасный вывод

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

Конкатенация это объединение строк. В PHP для этого используется оператор . (точка).

Пример:

$name = "Максим";
$greeting = "Привет, " . $name . "! Сегодня " . date("d.m.Y");
echo $greeting; // "Привет, Максим! Сегодня 14.05.2025"

Можно совмещать с присваиванием:

$text = "Начало";
$text .= " и конец.";
echo $text; // "Начало и конец."

Практические задачи

Попробуйте решить задачи самостоятельно, прежде чем смотреть решения.

Задача 1: Форматирование email

Напишите скрипт, который принимает email через форму и проверяет, содержит ли он символ @ и точку после него.

Подсказка: Используйте strpos().

Задача 2: Обработка текста

Дан текст: "PHP - это интересно! Но нужно практиковаться."
Замените все гласные буквы на звездочки *.

Решение:

$text = "PHP - это интересно! Но нужно практиковаться.";
$vowels = ["а", "е", "и", "о", "у", "ы", "э", "ю", "я"];
$result = str_replace($vowels, "*", mb_strtolower($text));
echo $result;

Задача 3: Разделение URL

Разбейте URL https://max-gabov.ru/php-dlya-nachinaushih на части (протокол, домен, путь).

Решение:

$url = "https://max-gabov.ru/php-dlya-nachinaushih";
$parts = explode("/", $url);
echo "Протокол: " . str_replace(":", "", $parts[0]) . "<br>";
echo "Домен: " . $parts[2] . "<br>";
echo "Путь: " . implode("/", array_slice($parts, 3));

Задача 4: Генератор паролей

Создайте функцию, которая генерирует случайный пароль из 8 символов (цифры и буквы).

Решение:

function generatePassword() {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $password = substr(str_shuffle($chars), 0, 8);
    return $password;
}
echo generatePassword();

Советы

  • Всегда проверяйте кодировку при работе с кириллицей.
  • Используйте htmlspecialchars() при выводе пользовательских данных.
  • Для сложных замен в тексте изучайте регулярные выражения (о них в следующих уроках).

Сегодня вы научились работать со строками, это огромный шаг.  Продолжайте учиться!

Полный курс с уроками по PHP для начинающих доступен здесь: https://max-gabov.ru/php-dlya-nachinaushih