如何将 "d-m-Y - d-m-Y" 字符串重新格式化为 "Y-m-d Y-m-d"?
How to reformat "d-m-Y - d-m-Y" string to "Y-m-d Y-m-d"?
我想更改包含两个 d-m-Y
日期字符串的字符串的格式,日期字符串由 space 连字符 space 分隔(代表一个范围)。所需的输出格式应为 Y-m-d - Y-m-d
.
我可以使用 d/m/Y - d/m/Y
字符串成功地执行类似的技术,但是当我解析这些新字符串的格式时有些不对劲。
我的代码:
$date = "25-05-2020 - 30-05-2020";
$string = explode('-', $date);
$date1 = explode('-', $string[0]);
$date2 = explode('-', $string[1]);
$date1 = $date1[2] . '-' . $date1[0] . '-' . $date1[1];
$date2 = $date2[2] . '-' . $date2[0] . '-' . $date2[1];
echo $date1 . ' - ' . $date2;
我希望样本输入的输出是 2020-05-25 - 2020-05-30
。
只需在 -
前后添加一个 space,如下所示:
<?php
$date = "25-05-2020 - 30-05-2020";
$splitted_dates = explode(" - ",$date);
$date1 = $splitted_dates[0];
$date2 = $splitted_dates[1];
echo $date1, " " , $date2;
另一个解决方案:
<?php
$date = "25-05-2020 - 30-05-2020";
preg_match_all('/\d{1,2}-\d{1,2}-\d{4}/', $date, $matches);
list ($date1, $date2) = $matches[0];
echo $date1." ".$date2;
我发现最直接的技术是单个 preg_replace()
调用,它交换字符串中每个日期的日值和年值。这样做,不需要生成任何临时数组来将输入字符串转换为输出字符串。
- 捕获:天数(
</code>)</li>
<li>捕获:连字符、月份数字、连字符 (<code>
)
- 捕获:年号(
)
- 匹配:space,连字符,space
- 捕获:天数(
</code>)</li>
<li>捕获:连字符、月份数字、连字符 (<code>
)
- 捕获:年号(
)
代码:(Demo)
var_export(
preg_replace(
'~(\d{2})(-\d{2}-)(\d{4}) - (\d{2})(-\d{2}-)(\d{4})~',
' - ',
'25-05-2020 - 30-05-2020'
)
);
输出:
'2020-05-25 - 2020-05-30'
我想更改包含两个 d-m-Y
日期字符串的字符串的格式,日期字符串由 space 连字符 space 分隔(代表一个范围)。所需的输出格式应为 Y-m-d - Y-m-d
.
我可以使用 d/m/Y - d/m/Y
字符串成功地执行类似的技术,但是当我解析这些新字符串的格式时有些不对劲。
我的代码:
$date = "25-05-2020 - 30-05-2020";
$string = explode('-', $date);
$date1 = explode('-', $string[0]);
$date2 = explode('-', $string[1]);
$date1 = $date1[2] . '-' . $date1[0] . '-' . $date1[1];
$date2 = $date2[2] . '-' . $date2[0] . '-' . $date2[1];
echo $date1 . ' - ' . $date2;
我希望样本输入的输出是 2020-05-25 - 2020-05-30
。
只需在 -
前后添加一个 space,如下所示:
<?php
$date = "25-05-2020 - 30-05-2020";
$splitted_dates = explode(" - ",$date);
$date1 = $splitted_dates[0];
$date2 = $splitted_dates[1];
echo $date1, " " , $date2;
另一个解决方案:
<?php
$date = "25-05-2020 - 30-05-2020";
preg_match_all('/\d{1,2}-\d{1,2}-\d{4}/', $date, $matches);
list ($date1, $date2) = $matches[0];
echo $date1." ".$date2;
我发现最直接的技术是单个 preg_replace()
调用,它交换字符串中每个日期的日值和年值。这样做,不需要生成任何临时数组来将输入字符串转换为输出字符串。
- 捕获:天数(
</code>)</li> <li>捕获:连字符、月份数字、连字符 (<code>
) - 捕获:年号(
)
- 匹配:space,连字符,space
- 捕获:天数(
</code>)</li> <li>捕获:连字符、月份数字、连字符 (<code>
) - 捕获:年号(
)
代码:(Demo)
var_export(
preg_replace(
'~(\d{2})(-\d{2}-)(\d{4}) - (\d{2})(-\d{2}-)(\d{4})~',
' - ',
'25-05-2020 - 30-05-2020'
)
);
输出:
'2020-05-25 - 2020-05-30'