Функция strpos() и strrpos()

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

В этом наборе заданий мы погрузимся в мир строковых функций PHP, а именно `strpos()` и `strrpos()`. Эти функции — незаменимые инструменты для поиска подстрок внутри других строк. Вы научитесь находить первое и последнее вхождение символа или слова, разберете типичные ошибки новичков, например, при проверке результата, и поймете, как использовать смещение для более сложного поиска. Задания построены от простого к сложному: сначала мы освоим базовый синтаксис, а затем перейдем к практическим примерам, где эти функции помогают решать реальные задачи, такие как извлечение имени файла из пути. Помните про индексацию с нуля, это ключевой момент при работе с позициями в строках.

Список тем

Основы strpos(): поиск подстроки

id: 39010_task_1

Найдите позицию слова "world" в строке "Hello world!". Заполните пропуски в коде, чтобы использовать правильную функцию для поиска первого вхождения и передать ей нужные аргументы.

Заполните пропуски
<?php
$haystack = "Hello world!";
$needle = "world";
$position = input1S(input2S, $needle);
echo $position;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Какой будет результат?

id: 39010_task_2

Проанализируйте код и укажите, какое число будет выведено на экран. Помните, что индексация символов в строках начинается с нуля, и пробелы тоже считаются символами.

Что должно получиться?
<?php
$text = "The quick brown fox";
echo strpos($text, "quick");
?>
Сообщения
Проверить
Показать подсказку

Поиск в самом начале строки

id: 39010_task_3

Выберите правильный вариант, который выведет данный код. Обратите внимание, что искомая подстрока находится в самом начале, а для вывода результата используется `var_dump`, показывающая тип и значение переменной.

Выберите правильный вариант ответа
<?php
$email = "user@example.com";
$position = strpos($email, "user");
var_dump($position);
?>
Сообщения
Проверить
Показать подсказку

Исправьте проверку наличия подстроки

id: 39010_task_4

В коде допущена классическая ошибка: условие `if` некорректно обрабатывает случай, когда подстрока найдена в позиции 0, так как 0 приводится к `false`. Исправьте строку с условием `if`, чтобы проверка была строгой и учитывала позицию 0 как успешный поиск.

Найдите ошибку и исправьте
<?php
$filename = "archive.zip";
 
if (strpos($filename, "archive")) {
    echo "Подстрока 'archive' найдена.";
} else {
    echo "Подстрока 'archive' не найдена.";
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Сравнение функций поиска

id: 39010_task_5

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

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
strpos()
strrpos()
stripos()
strripos()
Находит позицию последнего вхождения (с учетом регистра).
Находит позицию последнего вхождения (без учета регистра).
Находит позицию первого вхождения (без учета регистра).
Находит позицию первого вхождения (с учетом регистра).
Сообщения
Проверить
Показать подсказку

Поиск последнего вхождения

id: 39010_task_6

Найдите позицию последнего слова "test" в строке. Для этого вам нужно использовать правильную функцию. Перетащите нужные элементы из банка, чтобы завершить код. В банке есть лишние элементы.

Нужно правильно расставить в пропуски предложенные варианты
<?php
$log = "test-success | test-failed | test-success";
// Найдем позицию последнего слова "test"
$last_pos = input1S(input2S, input3S);
echo $last_pos;
?>
strrpos
$log
"test"
strpos
"success"
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что если подстрока не найдена?

id: 39010_task_7

Введите значение, которое будет выведено на экран, если `strrpos()` не сможет найти искомую подстроку. Обратите внимание, что мы используем `var_dump()` для вывода, чтобы увидеть тип и значение.

Что должно получиться?
<?php
$string = "Hello, world!";
$find = "bye";
var_dump(strrpos($string, $find));
?>
Сообщения
Проверить
Показать подсказку

Соберите код для извлечения имени файла

id: 39010_task_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, "/");
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Поиск со смещением

id: 39010_task_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;
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку
НайтиКурс.Ру