cr1gger
@cr1gger
Все дороги ведут в Рим — встретимся в Риме!

Регулярка не правильно работает?

Написал такую регулярку, чтобы отделить цифры от текста.
https://regex101.com/r/yBWKBd/1
на regex tester все работает правильно, разделяет на две группы, в одной текст в другой цифры.

в php sandbox код(sandbox.onlinephpfunctions.com ):
<?php
$re = '/([a-zA-Zа-яА-Я]+)([0-9]+)/';
$str = 'Сообщения21';

preg_match($re, $str, $matches);

var_dump($matches);

Выводит такой ответ:
array(3) {
  [0]=>
  string(10) "ения21"
  [1]=>
  string(8) "ения"
  [2]=>
  string(2) "21"
}


А должно быть так: [0 => 'Сообщения', 1 => '21' ]
  • Вопрос задан
  • 87 просмотров
Решения вопроса 2
а так?
'/(\D+)(\d+)/'
Ответ написан
@JohnDidact
Нуб во всём
Всё правильно выводит, не считая "ения". preg_match() в matches пишет под ключ n совпадение с номером n. А под ключём 0 вся строка, что подходит под шаблон. У меня тоже бывали проблемы с кириллицей, даже u не помогал. Разбираться я с этим не стал, времени не было, поэтому решал задачу так: составлял строку из русского алфавита во двух регистрах и вместо '[a-zA-Zа-яА-Я]' писал '[a-zA-Z'. $abc .']', где $abc - строка из русского алфавита в двух регистрах. Разделители и модификаторы расставишь сам)

Если ты хочешь найти более двух совпадений, тогда используй preg_match_all()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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