1

我有来自 eBay Web-Service 的这个字符串。

// 2 天 23 小时 37 分钟 50 秒
$string = P2DT23H37M50S

我正在使用以下代码来提取时间和日期:

$daysLeft = substr($string, 1, 1) 。“ 天”;
$hoursLeft = substr($string, 4, 2) 。“ 小时”;
$minutesLeft = substr($string, 7, 2) 。“ 分钟”;
$secondsLeft = substr($string, 10, 2) 。“秒”;

但问题是,当小时、分钟和日期只有 1 位时,字符串会变得一团糟,我最初让它工作,但我有点坚持寻找一种简单的方法来做到这一点,我打算把它写成一堆 If 语句,但真的想要一个更简单的方法来做到这一点。

4

2 回答 2

3

使用sscanf(与 sprintf 相反)怎么样?

list($daysLeft, $hoursLeft, $minutesLeft, $secondsLeft) = sscanf($string, "P%dDT%dH%dM%DS ");
于 2011-04-16T16:37:28.657 回答
0

如果您现在所有字段都在那里,只需 preg_split 非数字上的字符串:

$fields = preg_split('[^0-9]+', $string);
$daysLeft = $fields[1] . " Days";
$hoursLeft = $fields[2] . " Hours";
$minutesLeft = $fields[3] . " Minutes";
$secondsLeft = $fields[4] . " Seconds"; 
于 2011-04-16T16:32:46.980 回答