Как грамотно заменить explode?

Рейтинг: 0Ответов: 1Опубликовано: 13.09.2014

Есть строка вида a/b/c/d/e.

Нужно запихнуть ее в массив таким способом:

$a=explode('/', 'a/b/c/d/e');

Разделитель может быть любым.

Как сделать так, чтобы если перед разделителем стоит \ , то разделитель не учитывается?

Т.е. если стоит символ экранирования, то чтобы такой вариант не срабатывал \/.

Ответы

▲ 2Принят

Тут скорее подойдет preg_split(), чем explode().

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