Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Ошибка в регулярном выражении / 3 сообщений из 3, страница 1 из 1
27.05.2021, 20:09
    #40073642
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Ошибка в регулярном выражении
Есть такой фрагмент кода:
Код: php
1.
2.
3.
4.
5.
6.
	$d1p = '(\d{4})[-/.](\d{2})[-/.](\d{2})';
	$d2p = '(\d{2})[-/.](\d{2})[-/.](\d{4})';
	$t1p = '(\d{2})[-:](\d{2})';
	$t2p = '(\d{2})[-:](\d{2})[-:](\d{2})';
	$sp = '[  T@]';
	if (preg_match("~^{$d1p}{$sp}{$t1p}$~", $value, $m)) {


Почему-то он не матчит строку "2021-05-27 20:08", хотя должен.
Когда в качестве граничных символов вместо тильды (~) использовал слеш (/), то работало, но приходилось экранировать внутренние слеши.
...
Рейтинг: 0 / 0
27.05.2021, 20:13
    #40073644
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP: Ошибка в регулярном выражении
Если точнее, то вот неработающий пример:
Код: php
1.
2.
3.
4.
5.
6.
7.
$d1p = '(\d{4})[-/.](\d{2})[-/.](\d{2})';
$t1p = '(\d{2})[-:](\d{2})';
$sp = '[  T@]';
$str = '2021-05-27 10:11';
$re = "~^{$d1p}{$sp}{$t1p}$~";
$ret = preg_match($re, $str, $m);
print_r([$re, $str, $ret, $m]);


Символ между датой и временем это неразрывный пробел (с кодом 160), он же указан и в $sp.
...
Рейтинг: 0 / 0
28.05.2021, 18:11
    #40073904
PHP: Ошибка в регулярном выражении
неразрывный пробел - это \s+
и [] не нужны там
а T@ первый раз вижу в регулярке

зы: d1p -> y2
d2p -> y4
t1p -> t2
t2p -> t3
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP: Ошибка в регулярном выражении / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]