2013-05-20 57 views
2

我在PHP中有一個巨大的字符串。在這裏面有很多的URL字符串,例如:php遞歸插入字符串字符串

background: #9dc9de url("@{base-url}/img/background.jpg") center top no-repeat; 

什麼是要經過整個字符串,找到任何URL字符串,並根據當前的時間戳擴展前插入一個散列碼的最佳方法得到的結果如如:

background: #9dc9de url("@{base-url}/img/background_013857308.jpg") center top no-repeat; 

我目前正在試圖explode基於一些參數,但它絕對不是一個乾淨的想法。

+0

請在此上下文中定義「高效」。有很多解決方案可供選擇,但我們無法主觀判斷哪一種解決方案最適合您的情況。 –

+0

高效的性能。應用程序將隨着時間的推移而增長,因此被操縱的字符串將會增長。 –

+0

你打算用手解析文件嗎?如果是這樣,你會用什麼編輯器?如果沒有,你打算通過PHP解析CSS嗎?如果是這樣,你將使用什麼算法來創建哈希?如果不是PHP,什麼?您的問題不包含足夠的信息,以便我們針對您的情況提供具體的答案。 –

回答

0

我想出了preg_match_all('/\("([^"]+)"\)/', $content, $matches);它匹配括號內和雙引號裏的東西。

1

您不應該在生產服務器中使用該方法,因爲您將每次調用所有文件而不是從緩存中獲取它們。但是這對開發服務器來說可能是個好主意。

我會用:

$tm = time(); 
$css = str_ireplace(array('.jpg', '.gif', '.png'), array('.jpg?t='.$tm, '.gif?t='.$tm, '.png?t='.$tm), $css); 
+0

我的意圖背後的全部原因是爲了緩存目的,所以我和你在那裏。 –