我想修改我在wordPress(自动特色图片插件)中使用的PHP脚本。
问题是该脚本根据图像的URL为缩略图创建文件名。
听起来不错,直到你得到一个带空格的文件名,缩略图就像this%20Thumbnail.jpg
,当浏览器转到http://www.whatever.com/this%20Thumbnail.jpg
时,它会将%20
转换为空格而没有服务器上的文件名由该名称(带空格)。
要解决此问题,我认为我需要更改以下行,以便过滤$ imageURL以将%20
转换为空格。听起来不对吗?
这是代码。也许你可以告诉我,我是不是在咆哮错误的树
谢谢!
<?php
static function create_post_attachment_from_url($imageUrl = null)
{
if(is_null($imageUrl)) return null;
// get file name
$filename = substr($imageUrl, (strrpos($imageUrl, '/'))+1);
if (!(($uploads = wp_upload_dir(current_time('mysql')) ) && false === $uploads['error'])) {
return null;
}
// Generate unique file name
$filename = wp_unique_filename( $uploads['path'], $filename );
?>
答案 0 :(得分:1)
编辑一个更恰当和完整的答案:
static function create_post_attachment_from_url($imageUrl = null)
{
if(is_null($imageUrl)) return null;
// get the original filename from the URL
$filename = substr($imageUrl, (strrpos($imageUrl, '/'))+1);
// this bit is not relevant to the question, but we'll leave it in
if (!(($uploads = wp_upload_dir(current_time('mysql')) ) && false === $uploads['error'])) {
return null;
}
// Sanitize the filename we extracted from the URL
// Replace any %-escaped character with a dash
$filename = preg_replace('/%[a-fA-F0-9]{2}/', '-', $filename);
// Let Wordpress further modify the filename if it may clash with
// an existing one in the same directory
$filename = wp_unique_filename( $uploads['path'], $filename );
// ...
}
答案 1 :(得分:0)
最好使用正则表达式将下划线或连字符替换为图像名称中的空格。
$string = "Google%20%20%20Search%20Amit%20Singhal"
preg_replace('/%20+/g', ' ', $string);
此正则表达式将使用单个空格('')替换多个空格(%20)。