在多个定界符上将单个字符串拆分为一个数组

时间:2019-02-11 06:33:55

标签: php explode preg-split

是否可能爆炸以下内容:

08 1.2/3(1(1)2.1-1

{08, 1, 2, 3, 1, 1, 2, 1, 1}的数组?

我尝试使用preg_split("/ (\s|\.|\-|\(|\)) /g", '08 1.2/3(1(1)2.1-1'),但未返回任何内容。我尝试检查我的正则表达式here,它匹配得很好。我在这里想念什么?

2 个答案:

答案 0 :(得分:3)

您应该使用一个 character类,其中包含要用于拆分的所有定界符。正则表达式字符类出现在[...]中:

<?php
$keywords = preg_split("/[\s,\/().-]+/", '08 1.2/3(1(1)2.1-1');
print_r($keywords);

结果:

Array ( [0] => 08 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => 1 [6] => 2 [7] => 1 [8] => 1 )

答案 1 :(得分:0)

您可以使用preg_match_all():

$str = '08 1.2/3(1(1)2.1-1';
preg_match_all('!\d+!', $str, $matches);
print_r($matches);