2011-08-23 102 views
1

我試圖用//取代/\更換反斜線

$path = 'C:\wamp\www\mysite/bla/bla'; 
str_replace(array("\/", "\\"), array("\/\/", "\/\/"), $path); 

,但它不工作:(

我得到C:\\/wamp\\/www\mysite/bla/bla ...

+1

所有的答案都是一樣的,但如果它們相同,則不需要在'replacement'參數中有一個數組。即,這將工作:'$ path = str_replace(array('/','\\'),'//',$ path);' – NullUserException

回答

1

沒有必要擺脫正斜槓,所以它是干擾模式匹配。

此外,str_replace退貨更換,它不是按地址功能,所以你需要存儲在變量(docs)的回報。

看到它發生:http://codepad.org/CNr8P79m

<?php 
$path = 'C:\wamp\www\mysite/bla/bla'; 
$path = str_replace(array("/", "\\"), array("//", "//"), $path); 
echo $path; 
// output: C://wamp//www//mysite//bla//bla 

?> 
+0

你的意思是:http://codepad.org/HMvpOsC8 – Lana

+0

不,我不要,反斜槓需要轉義,正斜槓不會,我粘貼的示例代碼使用你提供的詳細信息是準確的 –

+0

啊,所以這是問題,謝謝:) – Lana

1

你不需要轉義/,您需要將返回值str_replace分配給一個變量:

$path = str_replace(array("/", "\\"), array("//", "//"), $path); 
+0

Downvoter - 請評論? –

+0

我確實將它分配給了一個var。如果我不逃避它,那麼它不起作用,我得到解析錯誤 – Lana

+0

如果你不轉義'/',你會得到什麼語法錯誤? –

1

如果你想正常化的路徑,然後我可以/建議更換所有目錄分隔符,因爲這不妨礙逃逸和工作在Linux和Windows。

0

您不需要僅反斜槓反斜槓。

$path = 'C:\wamp\www\mysite/bla/bla'; 
$path = str_replace(array('/', '\\'), array('//', '//'), $path); 
+0

供參考:單引號或雙引號對這個腳本的結果完全沒有影響。 –

+0

@Chris:是的,你說得對。我糾正了我的答案。 –