Preg_split головоломка - кто сможет решить?
На основе предыдущего вопроса
Как грамотно заменить explode в моем случае?
Как сделать вариант с //
?
Неправильно работает:
$str = 'a/b/c/d/e//f/g/h//i';
$arr = preg_split('~(?<!/)/~',$str);
Ответ должен получаться таким
a
b
c
d
e//f
g
h//i
Немного подумав, я написал такой код:
$str = 'a/b/c/d/e//f/g/h//i';
$arr = preg_split('/(?<!\/)\/(?!\/)/',$str);
Ответ:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e//f
[5] => g
[6] => h//i
)
На первый взгляд, он работает правильно, но если символов много ////
, то уже нет:
$str = 'a/b/c/d/e////f/g/h//i';
$arr = preg_split('/(?<!\/)\/(?!\/)/',$str);
Ответ должен получиться таким:
Array
(
[0] => a
[1] => b
[2] => c
[3] => d
[4] => e
[5] => //
[6] => f
[7] => g
[8] => h//i
)
Как исправить? @Deonis
Источник: Stack Overflow на русском