gpt4 book ai didi

PHP:preg 替换日期时间

转载 作者:行者123 更新时间:2023-12-05 08:44:23 25 4
gpt4 key购买 nike

如何用 preg_replace 替换格式为“Fri Mar 23 15:21:08 2012”的日期/时间?这种格式的日期在我的文本中出现了几次,我需要将其替换为当前时间/日期。

谢谢,

克里斯

最佳答案

那么,您需要的是一个表达式,它将匹配 3 个字母 (Fri) 后跟一个空格和另外三个字母 (Mar)。

首先我们需要匹配一些字母:

/[a-z]/

我们可以像这样匹配 3 个字母:

/[a-z]{3}/

...我们需要它不区分大小写:

/[a-z]{3}/i

...所以第一部分就是:

/[a-z]{3} [a-z]{3}/i

接下来,我们需要匹配 1 个或 2 个数字。数字可以用转义序列 \d 表示,所以我们会使用:

/\d{1,2}/

接下来我们匹配时间字符串,使用相同的转义序列:

/\d{2}:\d{2}:\d{2}/

...后跟最后的 4 位数年份:

/\d{4}/

把它们放在一起,我们得到:

/[a-z]{3} [a-z]{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}/i
// Fri Mar 23 15 : 21 : 08 2012

现在,我们需要将其替换为当前日期和时间。我们通常去的地方是 date() 函数,但是我们如何动态地将它放入替换中呢?我们可以将它作为字符串文字传递,或者我们可以使用回调函数从 preg_replace_callback() 中获取它。 但是preg_replace() 为我们提供了e 修饰符,它会导致替换字符串被评估为PHP 代码。与任何 PHP eval() 一样,我们必须小心谨慎地使用它,但这是一个合法的用例。

所以我们最终的 PHP 代码如下所示:

preg_replace(
'/[a-z]{3} [a-z]{3} \d{1,2} \d{2}:\d{2}:\d{2} \d{4}/ie',
"date('D M j H:i:s Y')",
$str
);

See it working

关于PHP:preg 替换日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10030619/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com