У меня логический запрос в виде строки, например:
mydate == 'один день назад' && mydate> 2014-05-16 16:00:00
- Является ли регулярное выражение хорошим способом проверки URL-адреса
- Удаление текста между двумя строками в php с использованием preg_replace
- Попытка захватить число после определенной строки в содержимом вызова с помощью curl
- ereg_replace для preg_replace?
- Извлечь часть из URL-адреса для строки запроса
Мне нужен каждый экземпляр даты, замененный меткой времени. Мой текущий код может заменить дату YYYY-MM-DD HH:MM:SS
временную метку с помощью strtotime()
:
$my_string = "mydate == 'one day ago' && mydate > 2014-05-16 16:00:00"; // Pattern: *YYYY-MM-DD HH:MM:SS* $pattern = '((?:2|1)\\d{3}(?:-|\\/)(?:(?:0[1-9])|(?:1[0-2]))(?:-|\\/)(?:(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))(?:T|\\s)(?:(?:[0-1][0-9])|(?:2[0-3])):(?:[0-5][0-9]):(?:[0-5][0-9]))'; $my_string = preg_replace_callback($pattern, function($m){return strtotime($m[0]);}, $my_string); echo($my_string);
Вывод:
mydate == 'один день назад' && mydate> 1400252400
Тем не менее, я также хочу поддерживать относительные фразы естественного языка. Строка запроса всегда имеет заданную структуру:
mydate
OPERATOR
«DATE
» && mydateOPERATOR
«DATE
» …
То, что я хотел бы сделать, это найти переменную mydate
пропустить мимо оператора, затем получить содержимое в одинарных кавычках, применить strtotime()
к содержимому одинарных кавычек и затем заменить дату (включая одинарные кавычки) целым числом. Например:
Входные данные:
mydate == 'один день назад' && mydate> '2014-05-16 16:00:00'
Целевой процесс:
mydate ==
timetostr('one day ago')
&& mydate>timetostr('2014-05-16 16:00:00')
Вывод:
mydate == 123123123123 && mydate> 1400252400
Обратите внимание на разницу между моим текущим и новым входом, теперь я хочу, чтобы оба экземпляра имели одинарные кавычки и не использовали регулярное выражение, предназначенное только для строк даты.
Как я могу создать регулярное выражение вдоль строк variable_name * '*'
Где * – любой символ, возьмите содержимое ' ' и верните переменную_имя *