@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

В чем фокус не понятно. При проверенных одинаковых входящих данных, возвращаемые значение разные. Отличие только в том, что в первом случае результат выполнения данной функции возвращается из метода.
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@Arekusei
Проверьте ещё кодировки.
Если весь код запихнуть в кодировку отличную от юникода, то получите `00`
Если всё запихнуть в юникод, то получите `11`.
Вообще больше похоже именно на проблемы кодировок и регулярок.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы