字符串数组(正则表达式,爆炸或其他)?

时间:2018-08-13 18:57:57

标签: php arrays regex string

最简单的方法是将格式为"PT2M19S""PT19S"(YouTube api视频时长)的字符串分开,以得到这样的数组?

Array
(
    [M] => 2
    [S] => 19
)

2 个答案:

答案 0 :(得分:4)

为什么不呢?

$str = 'PT2M19S';
$i = new DateInterval($str);
print_r($i);

您可以使用结果对象的'i'和's'属性

DateInterval Object
(
    [y] => 0
    [m] => 0
    [d] => 0
    [h] => 0
    [i] => 2
    [s] => 19
    [weekday] => 0
    [weekday_behavior] => 0
    [first_last_day_of] => 0
    [invert] => 0
    [days] => 
    [special_type] => 0
    [special_amount] => 0
    [have_weekday_relative] => 0
    [have_special_relative] => 0
)

答案 1 :(得分:3)

请改用此正则表达式:

preg_match_all('/(\d+)([MS])/', $string, $matches, PREG_PATTERN_ORDER);

然后使用第二个捕获组作为键并使用第一个捕获组作为值来创建关联数组。

$result = array_combine($matches[2], $matches[1]);