У меня проблема с некоторыми изображениями, которые я использую в своем блоге WordPress. После миграции я переименовал каждое изображение, заменив пробелы на подчеркивания, поэтому
HIDDEN_264_4062_FOTO_IDF los 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».
Я хотел бы знать, могу ли я сделать SQL-запрос в моей базе данных WordPress MySQL, который заменяет пробелы в файлах .jpg знаками подчеркивания. Путь изображений всегда один и тот же, поэтому правило должно это преобразовать:
/ files / HIDDEN_264_4062_FOTO_IDF los MID.jpg
/files/HIDDEN_264_4062_FOTO_IDF_los_MID.jpg
часть "/ files / HIDDEN_264_" всегда одна и та же, но остальное меняется. Есть ли способ выполнить это? Может быть, правило перезаписи на Apache (нашем текущем веб-сервере)?
даже если в базе данных URL-адрес использует пробелы, когда wordpress отправляет его в браузер, он будет кодировать URL-адрес, поэтому он будет преобразовывать пробелы с их сущностью% 20, вы можете попробовать SQL-запрос выше, но сделайте резервную копию перед mysqldump --all-databases> my-back.sql
Вы можете использовать mysql replace
функционировать как:
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_%';
В приведенном выше примере пробелы заменяются только в первых 30 символах в your_field
. Вы можете настроить его в соответствии с типом имеющихся у вас данных. Если вы не можете определить правильную длину (30 в этом примере), вы можете использовать locate
функция для поиска определенного шаблона (разделителя).
Я не могу вам сказать больше, так как я не знаю формата ваших данных.