19
Апр
2021

Не могу понять почему возвращается неверное первое вхождение подстроки

Я пишу следующую функцию:

public static function checkTextOnPattern(string $text): string
{
    $result = '';
    $matches = [];
    $text = 'Какой-то текст /Бог Амон!=Истинный Бог/ продолжение какого-то текста или /Да!=Нет/';

    preg_match_all('/\/(.+?)\//', $text, $matches);
    
    if (isset($matches[0])) {
        $offset = 0;
        foreach ($matches[0] as $number => $match) {
            $position = strpos($text, $match, $offset);
            dd($position, mb_substr($text, 0, $position));
        }
    }
    
    dd($matches);
    
    
    return $result;
}

Результат выполнения:

27

"Какой-то текст /Бог Амон!=И"

Я не могу понять, почему возвращается неверное первое вхождение подстроки - 27, когда должно быть около 16. Я не знаю какой-то специфики php функции strpos? Почему возвращается не ожидаемое значение?

Источник: https://ru.stackoverflow.com/questions/1272262/%D0%9D%D0%B5-%D0%BC%D0%BE%D0%B3%D1%83-%D0%BF%D0%BE%D0%BD%D1%8F%D1%82%D1%8C-%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83-%D0%B2%D0%BE%D0%B7%D0%B2%D1%80%D0%B0%D1%89%D0%B0%D0%B5%D1%82%D1%81%D1%8F-%D0%BD%D0%B5%D0%B2%D0%B5%D1%80%D0%BD%D0%BE%D0%B5-%D0%BF%D0%B5%D1%80%D0%B2%D0%BE%D0%B5-%D0%B2%D1%85%D0%BE%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%BF%D0%BE%D0%B4%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8

Тебе может это понравится...

Добавить комментарий