2013-07-16 61 views
0

我想從MySQL數據庫中提取圖像的文件路徑並將其轉換爲URL。但是,當我通過str_replace傳遞它時,沒有進行任何更改。我已經設置了一個預設路徑的測試文檔,並且沒有任何問題。str_replace不會取代從數據庫中提取的url

我的代碼從數據庫中提取的路徑是

$user_image = get_web_path($row['user_pic_path']); 

其中

function get_web_path($file_system_path) { 
    return str_replace(var_dump($_SERVER['DOCUMENT_ROOT']), '', var_dump($file_system_path)); 
} 

editted

My test code is: 

<?php 
    echo "DOCUMENT_ROOT: {$_SERVER['DOCUMENT_ROOT']}"; 
    $image_sample_path = "C:/wamp/www/website/images/image123.jpg"; 
    $web_image_path = str_replace($_SERVER['DOCUMENT_ROOT'], '', $image_sample_path); 

    echo "<br /><br />CONVERTED PATH: {$web_image_path}"; 
?> 

,輸出:

/website/images/image123.jpg" 

但是,當從數據庫提取值時,'user_pic_path'字段中的C:/ wamp/www未被替換。

的var_dump( 'DOCUMENT_ROOT')給出

string 'C:/wamp/www' (length=11) 

的var_dump($ file_system_path))給出

string 'C:/wamp/www/website/images/image123.jpg' (length=39) 
+0

你可以給一些圖像路徑,什麼$ _ SERVER [「DOCUMENT_ROOT」]是這樣,如果答案@anubhava給不工作,我們有更多的洞察力,以幫助你解決了這個問題。 –

+0

你可以回顯/ var_dump $ user_image變量,看看你得到什麼。可能是你沒有從你的數據庫查詢本身獲得正確的值?該功能似乎工作正常,但。 – Maximus2012

+0

爲什麼你首先在數據庫中存儲絕對路徑?看起來存儲在數據庫中的路徑與我不匹配,因此請檢查該值。但是,您仍然應該切換到資產的相對路徑... – nietonfir

回答

1

爲什麼你身邊$_SERVER['DOCUMENT_ROOT']花括號?

嘗試更換與:

str_replace($_SERVER['DOCUMENT_ROOT'], '', $file_system_path); 
+0

即使沒有大括號,仍然無法正常工作。我將發佈我的測試代碼與設置值,以表明它的工作方式。 – MorganJ

+1

它看起來很醜,但沒有任何錯誤,OP是在做 – Orangepill

+0

我同意Orangepill。我在我的系統上嘗試過這個功能,它的工作原樣。 – Maximus2012