2016-08-24 78 views
1

我有一個由文件路徑設置的變量。路徑根據日期動態設置,因此PHP字符串反斜槓後跟數字

$str = "IMAGES\2016\08\01\NM.jpg" 

注意反斜槓後跟數字。這是由服務器設置的,我無法在它到達我的php文件之前進行更改,但它似乎導致這些字符進行編碼,從而導致我的腳本中斷。

我試圖使用str_replace來改變反斜槓爲正斜槓,但根據我對the php manual on blackslashes的理解,它正在編碼之前,該函數有機會運行。

我的問題是這樣的:

有沒有辦法來改變如何PHP是讀取字符串?或者有什麼方法可以改變它,使它變得可用?

回答

0

字符串$str中的反斜槓正在轉義字符之後立即轉義,您可以通過使用單引號或;你可以通過使用反斜槓來避開反斜槓(等待它......)。

echo $str = "IMAGES\2016\08\01\NM.jpg"; 

結果:IMAGES?68\NM.jpg

echo $str = "IMAGES\\2016\\08\\01\\NM.jpg"; 

結果:IMAGES\2016\08\01\NM.jpg

旁白:你可以使用str_replacepreg_replace有兩個反斜槓替換每個單反斜線。

+0

感謝William,我的主要問題是通過使用雙引號,反斜槓後面的數字以某種奇怪的方式進行編碼,並且在變量被設置之前我無法轉義它,因爲它是從DB中獲取的。我發誓我在發佈我的問題之前嘗試過單引號,但由於某種原因,直到我回去後才嘗試使用它:)將它鎖定爲星期三的情況? – zhwatts

+0

我們一直在那裏盯着看起來很明顯,但需要永遠點擊的東西。更多的咖啡因爲你! ...或更少。 –

0

哇,我覺得自己像一個大白癡。

$str = 'IMAGES\2016\08\01\NM.jpg' 

該工作...與單引號....我想這就是當你一整天盯着電腦屏幕時會發生什麼。