В этом наборе заданий мы погрузимся в мир строковых функций PHP, а именно `strpos()` и `strrpos()`. Эти функции — незаменимые инструменты для поиска подстрок внутри других строк. Вы научитесь находить первое и последнее вхождение символа или слова, разберете типичные ошибки новичков, например, при проверке результата, и поймете, как использовать смещение для более сложного поиска. Задания построены от простого к сложному: сначала мы освоим базовый синтаксис, а затем перейдем к практическим примерам, где эти функции помогают решать реальные задачи, такие как извлечение имени файла из пути. Помните про индексацию с нуля, это ключевой момент при работе с позициями в строках.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Iterator интерфейс
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- IteratorAggregate интерфейс
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Функция htmlspecialchars().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
1. Основы strpos(): поиск подстроки
Найдите позицию слова "world" в строке "Hello world!". Заполните пропуски в коде, чтобы использовать правильную функцию для поиска первого вхождения и передать ей нужные аргументы.
<?php
$haystack = "Hello world!";
$needle = "world";
$position = input1S(input2S, $needle);
echo $position;
?>2. Какой будет результат?
Проанализируйте код и укажите, какое число будет выведено на экран. Помните, что индексация символов в строках начинается с нуля, и пробелы тоже считаются символами.
<?php
$text = "The quick brown fox";
echo strpos($text, "quick");
?>3. Поиск в самом начале строки
Выберите правильный вариант, который выведет данный код. Обратите внимание, что искомая подстрока находится в самом начале, а для вывода результата используется `var_dump`, показывающая тип и значение переменной.
<?php
$email = "user@example.com";
$position = strpos($email, "user");
var_dump($position);
?>4. Исправьте проверку наличия подстроки
В коде допущена классическая ошибка: условие `if` некорректно обрабатывает случай, когда подстрока найдена в позиции 0, так как 0 приводится к `false`. Исправьте строку с условием `if`, чтобы проверка была строгой и учитывала позицию 0 как успешный поиск.
<?php$filename = "archive.zip"; if (strpos($filename, "archive")) { echo "Подстрока 'archive' найдена.";} else { echo "Подстрока 'archive' не найдена.";}?>5. Сравнение функций поиска
Сопоставьте названия функций с их точным описанием. В PHP есть несколько похожих функций для поиска, но каждая из них решает свою задачу. Расставьте описания так, чтобы они соответствовали функциям слева.
strpos()strrpos()stripos()strripos()6. Поиск последнего вхождения
Найдите позицию последнего слова "test" в строке. Для этого вам нужно использовать правильную функцию. Перетащите нужные элементы из банка, чтобы завершить код. В банке есть лишние элементы.
<?php
$log = "test-success | test-failed | test-success";
// Найдем позицию последнего слова "test"
$last_pos = input1S(input2S, input3S);
echo $last_pos;
?>7. Что если подстрока не найдена?
Введите значение, которое будет выведено на экран, если `strrpos()` не сможет найти искомую подстроку. Обратите внимание, что мы используем `var_dump()` для вывода, чтобы увидеть тип и значение.
<?php
$string = "Hello, world!";
$find = "bye";
var_dump(strrpos($string, $find));
?>8. Соберите код для извлечения имени файла
Используя функцию `strrpos()`, найдите позицию последнего слеша ('/') в пути к файлу. Затем, используя эту позицию и функцию `substr()`, извлеките только имя файла. Соберите работающий скрипт из предложенных частей. Некоторые части являются лишними и приведут к ошибке.
$last_slash_pos = strrpos($path, "/");$path = "/var/www/html/index.php";<?php?>echo substr($path, $last_slash_pos + 1);$filename = substr($path, 0, $last_slash_pos);$last_slash_pos = strpos($path, "/");9. Поиск со смещением
Найдите второе вхождение слова "is" в строке. Для этого нужно использовать третий необязательный аргумент функции `strpos()` (смещение), чтобы начать поиск не с начала строки, а с указанной позиции. Заполните пропуски в коде.
<?php
$text = "This is a string. This is another one.";
$first_pos = strpos($text, "is"); // Находит позицию 2
// Ищем второе вхождение, начиная с позиции 3 (2 + 1)
$second_pos = strpos($text, "is", input1S);
echo $second_pos;
?>