Я знаю, что вы уже приняли ответ, но есть очень простое, однострочное решение этой проблемы, которое я регулярно использую, и я чувствую, что его нужно опубликовать здесь:
$pathParts = explode('/', rtrim(str_replace('\\', '/', $path)));
Заменяет обратную косую черту на прямую, убирает любые конечные и взрывается. Это можно сделать безопасно, поскольку пути Windows не могут содержать косую черту, а пути Linux не могут содержать обратную косую черту.
Полученный массив не выглядит точно , как тот, который вы описали выше - корневая часть пути не будет содержать косую черту - но на самом деле он лучше представлен таким образом в любом случае. Это связано с тем, что корень пути (т. Е. C:\
или '/') на самом деле не так полезен, когда хранится с косой чертой. В результате вы можете вызвать implode('/', $pathParts);
и получить верный путь назад, тогда как с вашим массивом вы получите дополнительную косую черту в корне. Кроме того, \Users\User\My Documents
(без буквы диска) по-прежнему является допустимым путем в Windows, он просто подразумевает текущий рабочий объем.