我在我的WordPress博客上使用了一些图片时遇到问题。 迁移之后,我将每个图像都改为用下划线replace空格,所以
HIDDEN_264_4062_FOTO_IDF los MID.jpg
被改名为
HIDDEN_264_4062_FOTO_IDF_los_MID.jpg
但是尽pipe这个窍门对于大部分的post都是必要的,但是有些人试图用空格find旧的图片:
这没有find
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数据库中,使用下划线replace.jpg文件中的空格SQL查询。 图像的path总是相同的,所以规则应该改变这一点:
/ files / HIDDEN_264_4062_FOTO_IDF los MID.jpg
/files/HIDDEN_264_4062_FOTO_IDF_los_MID.jpg
“/ files / HIDDEN_264_”部分总是相同的,但其余的不同。 有什么办法来执行这个? 也许在Apache(我们目前的networking服务器)重写规则?
你可以使用mysql replacefunction,如:
mysql> UPDATE your_table SET your_field = REPLACE(your_field, ' ', '_') WHERE your_field like '/files/HIDDEN_264_%';
这将在保存在字段your_field中的文件名中replace所有带下划线的空格。
为了replace部分string中的空格,可以使用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_%';
上面的例子只replace了your_field前30个字符的your_field 。 您可以根据您拥有的数据types进行自定义。 如果无法确定正确的长度(本例中为30),则可以使用locatefunctionsearch特定的模式(分隔符)。
我不能告诉你更多,因为我不知道你的数据的格式。
即使进入数据库,当wordpress发送给浏览器时,URL会使用空格来进行URL编码,所以它会将空间转换为实体%20,你可以尝试上面的SQL查询,但是在mysqldump之前做一个备份–all-databases>我-back.sql