regex 在preg_replace内使用date()会导致日期替换为1970

7xllpg7q  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(108)

我尝试使用preg_replace为每个日期添加24小时。
我无法将日期传递给strtetime()。所有日期都被替换为1970。
我尝试将strtetime()与time()和preg_replace()一起使用$data = "Hello world Jan 19, 2023 8:06:47am testing Feb 09, 2021 2:06:47pm zooph foobar"; echo preg_replace("/[a-zA-Z]{3} \d{2}, \d{4} [0-9]{1,2}\:\d{2}\:\d{2}[ap]m/", date("F j, Y, g:i a", (strtotime("$0"))+86400),$data);

umuewwlo

umuewwlo1#

你的正则表达式模式是正确的,但是为了使用match的函数作为替换,你需要在这里使用preg_replace_callback()

$data = "Hello world Jan 19, 2023 8:06:47am testing Feb 09, 2021 2:06:47pm zooph foobar";
$out = preg_replace_callback(
    "/[a-zA-Z]{3} \d{2}, \d{4} \d{1,2}\:\d{2}\:\d{2}[ap]m/",
    function($m) {
        return date("F j, Y, g:i a", (strtotime($m[0]))+86400);
        },
    $data
);

echo $out;

这将打印:
世界,您好,2023年1月20日,上午8:06测试2021年2月10日,下午2:06
注:一天24小时有86,400秒。

相关问题