标签:php
我有这个代码应该重命名图像.它采用网站的标题并生成一个名称,但如果没有标题,它只保留旧名称.
我怎样才能这样做,而不是标题,它只是randoms数字输入?所以不是“title.extension”而是randomnumber.jpg?
$tmp = download_url( $img );
preg_match('/[^\?]+\.(jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG)/', $img, $matches);
$newfn = str_replace(array("%2B", "%52", "%20", "%5"), "B", basename($matches[0]));
$oofnm = basename($matches[0]);
if($newfn != $oofnm) {
$newfn2 = str_replace(array(".jpg", ".png", ".gif"), "", $newfn);
$tmppath = pathinfo( $tmp ); // extract path parts
$newpth = $tmppath['dirname'] . "/". $newfn2 . "." . $tmppath['extension'];
rename($tmp, $newpth); // renames temp file on server
$tmp = $newpth;
}
$file_array['name'] = $newfn;
$file_array['tmp_name'] = $tmp;
// If error storing temporarily, unlink
if ( is_wp_error( $tmp ) ) {
@unlink($file_array['tmp_name']);
$file_array['tmp_name'] = '';
continue;
}
解决方法:
放下所有不必要的:
$path_parts = pathinfo($matches[0]);
$file_array['name'] = rand(0,time()/1000) . "." . $path_parts['extension'];
我不确定为什么你使用time()/ 1000作为rand函数的上限.我宁愿使用rand固定的最小和最大args甚至使用更高级的mt_rand功能.
但我建议您使用uniqid()函数为唯一文件生成唯一的文件标识符:
$file_array['name'] = uniqid() . "." . $path_parts['extension'];
标签:php
来源: https://codeday.me/bug/20190623/1274831.html