Разбиение одной строки в массив по нескольким разделителям - PullRequest
0 голосов
/ 11 февраля 2019

Можно ли разобрать следующее:

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'), но ничего не вернулось,Я попытался проверить свое регулярное выражение здесь , и оно совпало.Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Вы должны использовать класс символов , содержащий все разделители, которые вы хотите использовать для разделения.Классы символов Regex появляются внутри [...]:

<?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 )
0 голосов
/ 11 февраля 2019

Вы можете использовать preg_match_all ():

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