加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP重命名文件,从特殊名称开始?

发布时间:2020-12-13 17:30:56 所属栏目:PHP教程 来源:网络整理
导读:我想重命名数据库中的文件.所以……我写道. 它的工作正常,除了长度为int的名称. (例如:bartmp_9404865346.jpg不起作用,但是bartmp_585558.jpg工作正常) $subject = '[img]http://www.example.org/users/uploads/bartmp_9404865346.jpg[/img] Hello world [i
我想重命名数据库中的文件.所以……我写道.
它的工作正常,除了长度为int的名称.
(例如:bartmp_9404865346.jpg不起作用,但是bartmp_585558.jpg工作正常)

$subject = '[img]http://www.example.org/users/uploads/bartmp_9404865346.jpg[/img]
            Hello world
            [img]http://www.example.org/users/uploads/bartmp_585558.jpg[/img]';

preg_match_all('/[img](.*?)[/img]/',$subject,$files);


foreach ($files[1] as $file) {
  $n = sscanf($file,"http://www.example.org/users/uploads/bartmp_%d.jpg");
  $refile = sprintf("http://www.example.org/users/uploads/mybar_%d.jpg",$n[0]);
  rename($file,$refile);
}

你可以给我任何改变的方法来做这个或一点点修改这个.
谢谢.

解决方法

您正在使用%d表示十进制,这似乎表面上是正确的:

$n = sscanf($file,"http://www.example.org/users/uploads/bartmp_%d.jpg");
$refile = sprintf("http://www.example.org/users/uploads/mybar_%d.jpg",$n[0]);

问题是PHP中的最大数值和编译为32位的其他语言是2147483647,因此9404865346将无法飞行.相反,您应该将值提取为字符串,而不是像这样:

$n = sscanf($file,"http://www.example.org/users/uploads/bartmp_%s.jpg");
$refile = sprintf("http://www.example.org/users/uploads/mybar_%s",$n[0]);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读