3

我正在尝试这样的路径:

一些/路径/这里一些\其他\路径

并用 PHP 的 DIRECTORY_SEPARATOR 内置常量替换路径中的每个斜杠

我有这个:

$subject = '/asdf';
$var = preg_replace('#\\\\#', DS, $subject);
print $var;

但这并不能取代,它只会增加。

谢谢你的帮助。

4

4 回答 4

10

与其使用preg_replace,不如直接使用str_replace

$var = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $subject);

http://us3.php.net/manual/en/function.str-replace.php

于 2013-05-29T13:27:04.470 回答
0

因为你有 2 个斜线尝试#\\#

于 2013-05-29T13:26:56.083 回答
0

它应该替换,而不是添加。但是试试这个:

preg_replace('/[\\]/', DS, $subject);

也应该工作。

于 2013-05-29T13:33:20.137 回答
0

如果您不明确需要正则表达式,那么就是这样:

$string = "some/path/here some\other\path";
$ds = DIRECTORY_SEPARATOR;
$result = str_replace(array("/","\\"),$ds,$string);
echo $result;

输出:some/path/here some/other/path

于 2013-05-29T13:30:43.023 回答