现在,我正在创建一个插件,从外部源侧面加载图像。
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);