这个问题之前已经被问到并且在没有任何答案的情况下被关闭
第二次幸运,我之前的问题已经结束:https://stackoverflow.com/questions/14903375/php-clean-up-path-with-duplicate-slashes看起来我错过了问号,以明确我的问题是什么。
问题:
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";
}
?>
答案 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();
。