В этом наборе заданий мы погрузимся в мир строковых функций 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().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Основы strpos(): поиск подстроки
Найдите позицию слова "world" в строке "Hello world!". Заполните пропуски в коде, чтобы использовать правильную функцию для поиска первого вхождения и передать ей нужные аргументы.
<?php
$haystack = "Hello world!";
$needle = "world";
$position = input1S(input2S, $needle);
echo $position;
?>Какой будет результат?
Проанализируйте код и укажите, какое число будет выведено на экран. Помните, что индексация символов в строках начинается с нуля, и пробелы тоже считаются символами.
<?php
$text = "The quick brown fox";
echo strpos($text, "quick");
?>Поиск в самом начале строки
Выберите правильный вариант, который выведет данный код. Обратите внимание, что искомая подстрока находится в самом начале, а для вывода результата используется `var_dump`, показывающая тип и значение переменной.
<?php
$email = "user@example.com";
$position = strpos($email, "user");
var_dump($position);
?>Исправьте проверку наличия подстроки
В коде допущена классическая ошибка: условие `if` некорректно обрабатывает случай, когда подстрока найдена в позиции 0, так как 0 приводится к `false`. Исправьте строку с условием `if`, чтобы проверка была строгой и учитывала позицию 0 как успешный поиск.
<?php$filename = "archive.zip"; if (strpos($filename, "archive")) { echo "Подстрока 'archive' найдена.";} else { echo "Подстрока 'archive' не найдена.";}?>Сравнение функций поиска
Сопоставьте названия функций с их точным описанием. В PHP есть несколько похожих функций для поиска, но каждая из них решает свою задачу. Расставьте описания так, чтобы они соответствовали функциям слева.
strpos()strrpos()stripos()strripos()Поиск последнего вхождения
Найдите позицию последнего слова "test" в строке. Для этого вам нужно использовать правильную функцию. Перетащите нужные элементы из банка, чтобы завершить код. В банке есть лишние элементы.
<?php
$log = "test-success | test-failed | test-success";
// Найдем позицию последнего слова "test"
$last_pos = input1S(input2S, input3S);
echo $last_pos;
?>Что если подстрока не найдена?
Введите значение, которое будет выведено на экран, если `strrpos()` не сможет найти искомую подстроку. Обратите внимание, что мы используем `var_dump()` для вывода, чтобы увидеть тип и значение.
<?php
$string = "Hello, world!";
$find = "bye";
var_dump(strrpos($string, $find));
?>Соберите код для извлечения имени файла
Используя функцию `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, "/");Поиск со смещением
Найдите второе вхождение слова "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;
?>