我有来自eBay Web-Service的这个字符串。
// 2Days 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语句中,但真的想要一个更简单的方法来做到这一点。
答案 0 :(得分:3)
如何使用sscanf(与sprintf相反)?
list($daysLeft, $hoursLeft, $minutesLeft, $secondsLeft) = sscanf($string, "P%dDT%dH%dM%DS ");
答案 1 :(得分: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";