我正在尝试在2个变量(T&+)上分割字符串,将其用于“ 2018-06-25T10:32:00 + 01:00”时会将其分割为:-
[0] => 2018-06-25
[1] => 10:32:00
[2] => 01:00
所以我想我可以使用“ preg_split(” /(T | +)/“,$ ent)”,但是它根本没有用。
我在PHP中拥有的代码是:-
$ent = "2018-06-25T10:32:00+01:00";
print_r(preg_split("/ (T|\+) /", $ent));
有什么想法我做错了吗?
答案 0 :(得分:2)
您的正则表达式中有问题。您可以像下面这样给它
print_r(preg_split("/T|\+/", $ent));
不使用正则表达式,也可以使用php的Datetime类将其拆分为日期和时间(我更喜欢)。
$ent = '2018-06-25T10:32:00+02:00';
$datetime = new DateTime($ent);
$date = $datetime->format('Y-m-d');
$time = $datetime->format('H:i:s');
$offset = $datetime->getOffset() / 3600;
echo $date.'<br/>';
echo $time.'<br/>';
echo $offset.'<br/>';
希望有帮助!
答案 1 :(得分:1)
在PHP中解析日期不是regex
的最佳用例。也许这是用其他语言处理日期的最佳方法,但不是PHP 。与手动解析相比,PHP提供了DateTime
classes,可以更快,更安全地处理日期。
这是您的代码的外观:
$date = new DateTime("2018-06-25T10:32:00+01:00");
echo $date->format('Y-m-d'), "\n";
echo $date->format('H:i:s'), "\n";
echo $date->format('P'), "\n";
详细了解DateTime
类和DateTime::format()
。
答案 2 :(得分:0)
在您的示例中,您使用了具有含义的空白(T|\+)
的交替。
您可以做的是删除空格并使用(T|\+)
或使用character class [T+]
$ent = "2018-06-25T10:32:00+01:00";
print_r(preg_split("/[T+]/", $ent));