Задать вопрос
@flammerman
Web Developer / И фронт и сервер

Что происходит с функцией preg_match в данном случае, мистика php?

В общем случай для меня загадочный

Имеем класс, самый обыкновенный, внутри него метод, проверяющий есть русские буквы или нет:
class Content {	
    public function isText($str) 
    {
        return preg_match('/([а-я][А-Я]+)/msi',$str);                       
    }
}

Мистика/баг/кривая рука происходит тут:
$c = new Content();   
       $text = 'Мы дорожим отношениями с постоянными и новыми клиентами и делаем все возможное, чтобы каждому нашему покупателю было удобно совершать покупки и возвращаться к нам снова.';
       echo $c->isText($text); // В этом случае выдает 1
       echo preg_match('/([а-я][А-Я]+)/msi',$text); // В этом выдает 0

В чем фокус не понятно. При проверенных одинаковых входящих данных, возвращаемые значение разные. Отличие только в том, что в первом случае результат выполнения данной функции возвращается из метода.
  • Вопрос задан
  • 192 просмотра
Подписаться 1 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
@Arekusei
Проверьте ещё кодировки.
Если весь код запихнуть в кодировку отличную от юникода, то получите `00`
Если всё запихнуть в юникод, то получите `11`.
Вообще больше похоже именно на проблемы кодировок и регулярок.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы