如何从文件路径中删除重复的斜杠

时间:2013-02-16 09:02:32

标签: php

这个问题之前已经被问到并且在没有任何答案的情况下被关闭

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

问题:

  1. 如何从字符串中删除重复的斜杠?请参阅下面的代码并附带示例。
  2. Windows(wamp)使用正斜杠支持文件路径的效果如何?编写c:/ wamp感觉不对,但似乎工作正常,因为我不确定。
  3. CODE:

    <?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";
     }
     ?>
    

3 个答案:

答案 0 :(得分: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/>";
 }

?>

答案 1 :(得分:1)

  

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

PHP非常支持这一点。实际上,自从多年以来,您可以使用它而不是DIRECTORY_SEPARATOR,因为它有助于轻松编写跨平台代码。

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

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

所以“只是”删除双斜线实际上是一个坏主意。你可能想要的是realpath

答案 2 :(得分:1)

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