Заменить на основе строки регулярного выражения и возвращаемой строки

У меня логический запрос в виде строки, например:

mydate == 'один день назад' && mydate> 2014-05-16 16:00:00

Мне нужен каждый экземпляр даты, замененный меткой времени. Мой текущий код может заменить дату 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 » && mydate OPERATOR « 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 * '*'

Где * – любой символ, возьмите содержимое ' ' и верните переменную_имя *