-2

这个问题之前已经被问过并且没有任何答案就关闭了

第二次幸运,我之前的问题被关闭了:https ://stackoverflow.com/questions/14903375/php-clean-up-path-with-duplicate-slashes看起来我错过了问号以明确我的问题曾是。

问题:

  1. 如何从字符串中删除重复的斜杠?请参阅下面的代码和示例。
  2. windows(wamp)如何支持使用正斜杠的文件路径?写 c:/wamp 感觉不对,但似乎工作正常,这是我不确定的原因。

代码:

<?php
function clean($full_path){
    return str_replace(array("\\", "//", "\/", "/\"), DIRECTORY_SEPARATOR, $full_path);
}

$paths = array(
 'var/www/tpl//main.tpl',
 'C:\wamp\www\/tpl\\main.tpl',
 'C:\wamp\www/\tpl\main.tpl');

 foreach($paths as $path){
     echo "Before: $url\nAfter:  ".clean($path)."\n---------------------\n";
 }
 ?>
4

3 回答 3

2

我认为你需要逃避反斜杠。尝试这个:

<?php

function clean($full_path){
    return str_replace(array(
        "\\\\",
        "\\/", 
        "//", 
        "\\/", 
        "/\\"), DIRECTORY_SEPARATOR, $full_path);
}

$paths = array(
 'var/www/tpl//main.tpl',
 'C:\wamp\www\/tpl\\main.tpl',
 'C:\wamp\www/\tpl\main.tpl');

 foreach($paths as $path){
     echo "Before: $path <br/> After:  ".clean($path)."<br/>---------------------<br/>";
 }

?>
于 2013-02-16T09:05:37.240 回答
1

windows(wamp)如何支持使用正斜杠的文件路径?写 c:/wamp 感觉不对,但似乎工作正常,这是我不确定的原因。

PHP 很好地支持了这一点。实际上,多年来,您可以直接使用它,而不是DIRECTORY_SEPARATOR因为它有助于轻松编写跨平台代码。

但是请注意这是 WAMP 中的网络共享:

\\host\share\path\to\file.ext

所以“只是”删除双斜杠实际上是一个坏主意。您可能想要的称为realpath.

于 2013-02-16T09:16:23.877 回答
1

您可以使用preg_match();str_replace();

于 2013-02-16T09:19:31.617 回答