Apache-2.2

MySQL/Apache:僅在某些 URL 中用下劃線替換空格

  • April 4, 2011

我在 WordPress 部落格上使用的一些圖片有問題。遷移後,我重命名了每個圖像,用下劃線替換空格,所以

HIDDEN_264_4062_FOTO_IDF 洛斯 MID.jpg

改名為

HIDDEN_264_4062_FOTO_IDF_los_MID.jpg

但是雖然這個技巧是必要的並且對大多數文章都有效,但他們中的一些人試圖找到帶有空格的舊圖像:

這個沒找到

http://www.example.com/files/HIDDEN_264_4062_FOTO_IDF%20los%20MID.jpg

這應該是正確的 URL

http://www.example.com/files/HIDDEN_264_4062_FOTO_IDF_los_MID.jpg

不過要小心,因為“%20”只顯示在瀏覽器上:數據庫上的文本顯示的是空格,而不是“%20”。

我想知道是否可以在我的 WordPress MySQL 數據庫中進行 SQL 查詢,用下劃線替換 .jpg 文件中的空格。圖像的路徑總是相同的,所以規則應該改變這個:

/files/HIDDEN_264_4062_FOTO_IDF 洛斯 MID.jpg

/files/HIDDEN_264_4062_FOTO_IDF_los_MID.jpg

“/files/HIDDEN_264_”部分始終相同,但其餘部分有所不同。有什麼方法可以執行此操作嗎?也許是 Apache(我們目前的網路伺服器)的重寫規則?

您可以使用 mysqlreplace函式,如:

mysql> UPDATE your_table SET your_field = REPLACE(your_field, ' ', '_') WHERE your_field like '/files/HIDDEN_264_%';

這將用下劃線替換欄位中保存的文件名中的所有空格your_field

為了替換部分字元串中的空格,您可以使用substring函式:

mysql> UPDATE your_table SET your_field = concat(REPLACE(substring(your_field from 1 for 30), ' ', '_'), substring(your_field from 31) WHERE your_field like '/files/HIDDEN_264_%';

上面的範例僅替換your_field. 您可以根據您擁有的數據類型對其進行自定義。如果您無法確定正確的長度(本例中為 30),您可以使用locate函式搜尋特定模式(分隔符)。

我不能告訴你更多,因為我不知道你的數據格式。

引用自:https://serverfault.com/questions/220087