使用php中的正则表达式将字符串拆分为数组

时间:2014-10-22 12:51:50

标签: php arrays regex string

我正在尝试拆分字符串并使用正则表达式放置在数组中。 字符串可能每次都会改变 我需要做的是如果字符串与T匹配:那么我需要得到4774 4848 如果字符串与T:和M:匹配,那么我需要我的结果

array(
[0] => 4774 4848, 
[1]=>0448 888 899
)

这是我的代码,

if (preg_match("/[T:|M:|Mob:|Phone:]\W(.*)[\W:]/mi", "T: 4774 4848 M: 0448 888 899", $matches))
        print_r($matches);

这里我的输出是

Array
(
    [0] => T: 4774 4848 M: 0448 888 
    [1] =>  4774 4848 M: 0448 888
)

如何将[1] => 4774 4848 M: 0448 888拆分为

[1] => 4774 4848, 
[2]=>0448 888 899

请帮我解决这个问题。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

尝试进行匹配而不是分割。使用preg_match_all进行全局匹配。

preg_match_all("/(?:[TM]:|Mob:|Phone:)\s*\K.*?(?=\s*[A-Z]:|$)/mi", "T: 4774 4848 M: 0448 888 899", $matches);
print_r($matches);

<强>输出:

Array
(
    [0] => Array
        (
            [0] => 4774 4848
            [1] => 0448 888 899
        )

)

仅使用T:输入,

preg_match_all("/(?:[TM]:|Mob:|Phone:)\s*\K.*?(?=\s*[A-Z]:|$)/mi", "T: 4774 4848", $matches);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => 4774 4848
        )

)