如果它是MS-DOS类型路径或Unix类型路径,我如何拆分字符串?

edt*_*edt 0 php regex unix split dos

我有一个表示目录路径的字符串.我希望拆分字符串,如果它是unix类型路径或ms-dos类型路径.

如何才能做到这一点?

例如:

<?php

$a = some_path1/some_path2/some_path3; // unix type path
$b = some_path1\some_path2\some_path3; // MS-DOS type path

$foo = preg_split("something", $a); // what regex can be used here?
    // the above should work with $a OR $b

?>
Run Code Online (Sandbox Code Playgroud)

Gre*_*reg 6

你的正则表达式会是

preg_split('_[\\\\/]_', $a);
Run Code Online (Sandbox Code Playgroud)

反斜杠为字符串转义一次,对正则表达式引擎再转义一次.

编辑:

如果你知道你有什么类型的路径(例如你知道它是当前操作系统的类型),你可以这样做:

preg_split('_' . preg_quote($pathSep, '_') . '_', $a)
Run Code Online (Sandbox Code Playgroud)

您可以根据需要使用常量DIRECTORY_SEPARATOR代替$pathSep.这将解决@Alan Storm指出的问题