在多个分隔符上将单个字符串拆分为数组

Splitting a single string to an array on more than one delimiter

是否可以爆出以下内容:

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,它匹配得很好。我在这里错过了什么?

您可以使用 preg_match_all():

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

您应该使用 字符 class 包含要用于拆分的所有定界符。正则表达式字符 classes 出现在 [...]:

<?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 )