在镜像侧面加载包含`%20`的url后清除文件名

时间:2016-01-01 作者:jgraup

现在,我正在创建一个插件,从外部源侧面加载图像。

UI允许我在外部服务器上选择文件,然后通过AJAX下载文件;media_sideload_image. 一切都很顺利。加载图像后,我将用空格替换破折号和下划线,并将字母/数字分隔开来以便于识别,从而清理附件的标题。

// sideload the image
$src = media_sideload_image(esc_url($url), $post_id, $desc, $return);

// convert to attachment src -> ID -> post
$id = attachment_url_to_postid($src);
$post = get_post($id);

// clean the title
// BEFORE: BB-SH-YongKang20Road-6
// AFTER: BB SH YongKang 20 Road 6

$title = $post->post_title;
$title = str_replace(\'-\', \' \', $title);
$title = str_replace(\'_\', \' \', $title);
$title = preg_replace("/[^a-zA-Z0-9\\s\\p{P}]/", "", $title);
$title = preg_replace(\'/(?<=[a-z])(?=\\d)|(?<=\\d)(?=[a-z])/i\', \' \', $title);
我的问题是随机性20 我知道这是因为一个编码的空间%20. 现在所有的标题和文件名都有这个随机的20。

如何清除源url并使其仍然有效或修改最终文件名以排除%20/20?

<小时>

UPDATED SOLUTION

$src = media_sideload_image(rawurldecode($url), $post_id, $desc, $return);

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

rawurldecode 修复了此问题。

$src = media_sideload_image(rawurldecode($url), $post_id, $desc, $return);

相关推荐

Images getting smashed

我正在开发一个网站,我遇到了一个关于图像和图库的问题。每当你进入页面时,图像都会被破坏,一旦你刷新几次,它就会被修复,但第一次进入页面时,它看起来是这样的:当它看起来像这样时:这些图像经过的过程是:上传画廊(Gutenberg Block)使用EWW插件进行优化之后,关于图像优化,我激活了PageSpped Ninja、AutoOptimize和Smush插件。我已尝试禁用所有这些功能,但问题仍然存在,我希望您能帮助我解决这个问题。谢谢:D