簡體   English   中英

Preg_split 2個字符

[英]Preg_split on 2 characters

我正在嘗試在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));

我有什么想法我做錯了嗎?

您的正則表達式中有問題。 您可以像下面這樣給它;

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/>';

希望能幫助到你!!

在PHP中解析日期不是regex的最佳用例。 也許這是用其他語言處理日期的最佳方法,而不是PHP PHP提供的DateTime手動解析更快,更安全地處理日期。

這是您的代碼應如下所示:

$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";

查看結果: https : //3v4l.org/gFvLp

閱讀有關DateTime類和DateTime::format()

在您的示例中,您使用了具有空格含義的交替(T|\\+)

您可以做的是刪除空格並使用(T|\\+)或替代使用字符類 [T+]

$ent = "2018-06-25T10:32:00+01:00";
print_r(preg_split("/[T+]/", $ent));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM