🐘 PHP

Строки и работа с текстом в PHP 8.2: подробное руководство

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

Введение: Почему важно уметь работать с текстом?

Представь, что ты — создатель популярной NFT-коллекции, SMM-менеджер или техноблогер. Куда бы ты ни заглянул, везде есть текст: названия токенов, хештеги, посты, статьи. Компьютер видит текст как набор символов (букв, цифр, знаков). В PHP такой набор называется строкой.

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

Основной синтаксис: Строки в PHP 8.2

Строку можно записать в одинарных или двойных кавычках. Разница есть, но для начала используй одинарные — они проще.

// Пример 1: Создание строки
$name = 'SuperGadget X';
echo "Название гаджета: $name\n"; // Вывод: Название гаджета: SuperGadget X

Основные операции со строками:

  • Конкатенация (склеивание) — объединение строк через точку (.)
  • Длина строки — функция strlen()
  • Обрезка строки — функция substr()
  • Поиск подстроки — функция strpos()
  • Замена части строки — функция str_replace()
  • Переворот строки — функция strrev()
  • Разбиение строки на слова — функция explode()
// Пример 2: Основные операции
$text = 'Привет, мир!';
echo "Длина: " . strlen($text) . "\n";         // 12 (считает и пробел, и запятую)
echo "Первые 7 символов: " . substr($text, 0, 7) . "\n"; // "Привет,"
echo "Позиция слова 'мир': " . strpos($text, 'мир') . "\n"; // 8
echo "Замена: " . str_replace('мир', 'код', $text) . "\n"; // "Привет, код!"
echo "Задом наперед: " . strrev($text) . "\n"; // "!рим ,тевирП"

// Разбиение на слова
$words = explode(' ', $text); // ['Привет,', 'мир!']
echo "Количество слов: " . count($words) . "\n"; // 2

Разбор типичных задач

Задача 1: NFT — Анализ названия токена

У нас есть название NFT. Нужно проверить, не слишком ли оно длинное (больше 20 символов), и вывести первые 10 символов.

// Ввод: пользователь вводит название
$input = trim(fgets(STDIN)); // Например: "CyberPunkApe#777"
$length = strlen($input);
if ($length > 20) {
    echo "Название слишком длинное! ($length символов)\n";
    echo "Первые 10 символов: " . substr($input, 0, 10) . "...\n";
} else {
    echo "Название подходит. Длина: $length символов\n";
}

Задача 2: Хештег — Обрезка длинного хештега

Дан хештег (начинается с #). Нужно оставить только первые 10 символов (вместе с #).

$hashtag = trim(fgets(STDIN)); // Например: "#ЛучшийДеньДляПрограммирования"
// Отрезаем первые 10 символов (с 0 по 9)
$short = substr($hashtag, 0, 10);
echo "Короткий хештег: $short\n";

Задача 3: Песня — Подсчет слов

Дан текст песни. Нужно подсчитать количество слов. Слова разделены пробелами.

$lyrics = trim(fgets(STDIN)); // Например: "Hello world it's a new day"
$words = explode(' ', $lyrics);
$count = count($words);
echo "Количество слов: $count\n";

Задача 4: Статья — Заключительная часть

Нужно взять последние 100 символов статьи.

$article = trim(fgets(STDIN)); // Длинный текст
$length = strlen($article);
$start = $length - 100; // Начало последних 100 символов
if ($start < 0) $start = 0; // Если статья короче 100 символов
$ending = substr($article, $start);
echo "Заключение:\n$ending\n";

Задача 5: Обратное сообщение — Переворот строки

Нужно вывести фразу задом наперед.

$message = trim(fgets(STDIN)); // "Привет подписчики"
$reversed = strrev($message);
echo "Обратное сообщение: $reversed\n";

Частые ошибки новичков

  1. Путаница с кавычками: Внутри строки с одинарными кавычками переменные не работают. Используй двойные кавычки или конкатенацию.
    Неправильно: echo 'Привет, $name'; — выведет "Привет, $name"
    Правильно: echo "Привет, $name"; или echo 'Привет, ' . $name;
  2. Забывают про пробелы: Функция substr() считает пробелы как символы. Если нужно 10 букв, а в начале пробел — получите 9 букв + пробел.
  3. Не обрабатывают пустой ввод: Если пользователь ничего не ввел, explode() вернет массив с одним пустым элементом. Всегда проверяйте длину строки перед разбиением.
  4. Путают strpos() и str_contains(): В PHP 8.2 есть str_contains(), который возвращает true/false. Используйте его для простой проверки наличия подстроки.

Итоговый пример: Комбинированная задача

Представь, что ты — популярный блогер. Ты хочешь провести конкурс: пользователь вводит фразу, а программа делает из неё "зашифрованное" сообщение: переворачивает, обрезает до 20 символов и добавляет хештег #Конкурс.

// Получаем фразу от пользователя
echo "Введите вашу фразу: ";
$phrase = trim(fgets(STDIN));

// Шаг 1: Переворачиваем
$reversed = strrev($phrase);

// Шаг 2: Обрезаем до 20 символов (если длиннее)
if (strlen($reversed) > 20) {
    $short = substr($reversed, 0, 20) . '...';
} else {
    $short = $reversed;
}

// Шаг 3: Добавляем хештег
$result = $short . ' #Конкурс';

// Выводим результат
echo "Ваше зашифрованное сообщение:\n";
echo $result . "\n";

// Пример работы:
// Ввод: "Сегодня отличный день для конкурса!"
// Вывод: "!асрувнок ялед йынчилтО #Конкурс"

Вот и всё! Теперь ты умеешь работать со строками в PHP 8.2. Эти навыки пригодятся в любой задаче, где есть текст — от анализа названий NFT до обработки комментариев в социальных сетях. Пробуй, экспериментируй, и всё получится!