PHP: Поиск стартовой позиции
Одна из частых задач при работе со строками — определить, является ли одна строка частью (подстрокой) другой строки. В большинстве языков программирования есть встроенная функция, предназначенная именно для этой задачи. В PHP такой функции нет, и её имитируют с помощью функции mb_strpos(). Эта функция ищет позицию первого вхождения одной строки в другую.
<?php
if (mb_strpos('Валар Моргулис', 'Моргулис')) { // 6
// ...
}
В примере выше функция вернет 6, что соответствует индексу буквы М.
<?php
if (mb_strpos('Валар Моргулис', 'Валар')) { // 0
// ...
}
А в этом примере вернётся 0
, что соответствует первой букве строки. В этом коде кроется ошибка, которую часто допускают новички. В PHP 0
рассматривается, как false
, а значит, условие не выполнится. Правильная проверка выглядит так:
<?php
if (mb_strpos('Валар Моргулис', 'Валар') !== false) {
// ...
}
Функция mb_strpos()
возвращает false
если подстрока не была найдена, а значит можно воспользоваться строгим сравнением с false
.
Задание
Допишите реализацию функции startsWith()
, которая определяет, начинается ли строка с подстроки.
<?php
startsWith('Баратеон', 'он'); // false
startsWith('Баратеон', 'Бар'); // true