Изучение различных методов поиска последнего вхождения подстроки без учета регистра в PHP

В PHP функция strripos()позволяет найти позицию последнего вхождения подстроки без учета регистра внутри строки. Эта функция особенно полезна, когда вам нужно найти последний экземпляр подстроки в тексте, независимо от ее регистра. В этой статье мы рассмотрим несколько методов и примеры кода для эффективного выполнения этой задачи.

Метод 1: использование strripos()
Самый простой способ найти последнее вхождение подстроки без учета регистра — использовать саму функцию strripos(). Эта функция ищет подстроку, начиная с конца строки, и возвращает позицию ее последнего вхождения.

$string = "This is a sample string example.";
$substring = "sample";
$position = strripos($string, $substring);
echo "Position of the last occurrence: " . $position;

Метод 2: преобразование в нижний регистр
Другой подход заключается в преобразовании строки и подстроки в нижний регистр с помощью функции strtolower(). Затем вы можете использовать функцию strripos(), чтобы найти последнее вхождение.

$string = "This is a sample string example.";
$substring = "SAMPLE";
$stringLower = strtolower($string);
$substringLower = strtolower($substring);
$position = strripos($stringLower, $substringLower);
echo "Position of the last occurrence: " . $position;

Метод 3: цикл по подстрокам
Если вы предпочитаете более ручной подход, вы можете использовать цикл для поиска последнего вхождения подстроки без учета регистра. Этот метод включает в себя перебор строки и сравнение подстрок с нужной подстрокой. Отслеживая позицию последнего совпадения, вы можете определить окончательное совпадение.

$string = "This is a sample string example.";
$substring = "sample";
$position = -1;
$length = strlen($string);
$substringLength = strlen($substring);
for ($i = 0; $i <= $length - $substringLength; $i++) {
    if (strcasecmp(substr($string, $i, $substringLength), $substring) === 0) {
        $position = $i;
    }
}
echo "Position of the last occurrence: " . $position;

Метод 4. Разложение и переворачивание строки.
Другой подход предполагает разложение строки на массив слов с помощью функции explode()и последующее переворачивание массива. Выполняя поиск первого вхождения перевернутой подстроки, вы можете определить позицию последнего вхождения в исходной строке.

$string = "This is a sample string example.";
$substring = "sample";
$words = explode(" ", $string);
$reversed = array_reverse($words);
$position = -1;
foreach ($reversed as $index => $word) {
    if (strcasecmp($substring, $word) === 0) {
        $position = strlen($string) - strlen(implode(" ", array_slice($words, 0, count($words) - $index)));
        break;
    }
}
echo "Position of the last occurrence: " . $position;