2010-08-12 109 views
0
string '/home/adam/Projects/red/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg' (length=85) 

什麼,我需要的只是 http://localhost/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg替換字符串的最佳方法是什麼?

是什麼做的最好方法是什麼?我的意思是使用strlen? substr_replace? substr?即時通訊有點困惑什麼是最好的方式做到這一點?因爲有很多方法可以做到這一點。

編輯*沒有新手標籤:

// get from database red/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg 
    $image_path = $this->data['products'][0]['image_small']; 
    $exploded = end(explode('/', $image_path)); 
    $myurl = DOMAIN; 
    $myfullurl = $myurl."/storage/".$exploded; 

//它的工作原理!但讓看到的評論也許有更好的方法:)

+0

@sarfraz,沒有我無法再使用它:|即使最好的做法也沒有了,奇怪嗎?也許他們正在降低數據庫讀取負載或其他東西。 – 2010-08-12 17:34:30

回答

1

這裏是你如何能得到圖像部分:

$str = '/home/adam/Projects/red/storag/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg'; 
$exploded = end(explode('/', $str)); 
echo $exploded; 

結果:

22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg 

現在你可以用串聯它無論如:

$new_str = 'http://localhost/storage/' . $exploded; 
echo $new_str; 

結果:

http://localhost/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg 

你想連接您的文檔根目錄下,你做這樣的圖片路徑是最有可能的:

$img_path = $_SERVER['DOCUMENT_ROOT'] . $exploded; 

的想法是,你爆炸的字符串explode功能通過指定/作爲分隔符。這給了你陣列,現在你使用end函數來獲取數組的實際結尾部分,這是你的圖像。

+0

wew,ive neverthink! 。讓我試試:) – 2010-08-12 17:28:41

0

我建議你檢查如果字符串包含/home/adam/Projects/red,如果確實如此,您可以使用SUBSTR獲得之後的部分,然後將它與http://localost粘合起來。

$path = '/home/adam/Projects/red/storage/*snip*.jpg'; 
$basePath = "/home/adam/Projects/red"; 
if (strpos($path, $path) !== false) 
    $url = 'http://localhost' . substr($path, strlen($basePath)); 
+0

這麼難...... – pltvs 2010-08-12 17:30:30

+0

@garvey:排除變量聲明,它是兩行。 – zneak 2010-08-12 17:33:35

0

這一個幾乎是最簡單的

str_replace(
    "/home/adam/Projects/red", 
    "http://localhost", 
    "/home/adam/Projects/red/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg" 
); 
+1

雖然不太可能,但如果在路徑中多次出現「/ home/adam/Projects/red」,則會中斷字符串。 – zneak 2010-08-12 17:32:43

+0

@zneak確實,但那是不太可能的。 – Maerlyn 2010-08-12 18:55:46

0
$string = '/home/adam/Projects/red/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg'; 
str_replace('/home/adam/Projects/red', 'http://localost', $string) 
+0

這不太可能,但如果'$ string'多次包含'/ home/adam/Projects/red',則會得到錯誤的結果。 – zneak 2010-08-12 17:34:20

1

如果路徑前綴代表你的文檔根目錄的路徑,那麼你就可以做到這一點剝離它:

$path = '/home/adam/Projects/red/storage/22ff0bc0662bd323891844f6ed342cce2603490ec0_tumb_2.jpg'; 
$_SERVER['DOCUMENT_ROOT'] = '/home/adam/Projects/red/'; 
if (substr($path, 0, strlen($_SERVER['DOCUMENT_ROOT'])) === $_SERVER['DOCUMENT_ROOT']) { 
    $uriPath = substr($path, strlen(rtrim($_SERVER['DOCUMENT_ROOT'], '/'))); 
    echo $uriPath; 
} 
相關問題