请教php高手,解决basename函数和mb_substr函数处理中文文件名称的解决方法,在上传文件时,总是出现乱码

默认分类 未结 1 1341
___TTszina
___TTszina 2023-03-19 13:41
相关标签:
1条回答
  • 2023-03-19 13:58

    php上传文件时文件名乱码的解决方法:首先在脚本头部添加【header("Content-type: text/html; charset=utf-8");】;然后利用iconv()函数转换字符编码即可。

    首先,在php文件的头部加这么一段代码:

    (推荐教程:php图文教程)

    header("Content-type: text/html; charset=utf-8");

    然后定义一个变量:

    $name = iconv('utf-8','gb2312',"upload/".$file["name"]);

    (视频教程推荐:php视频教程)

    php代码:

    header("Content-type: text/html; charset=utf-8");$file = $_FILES["file"];if($file["error"]>0){ echo "错误:".$file["error"];}else{ $name = iconv('utf-8','gb2312',"upload/".$file["name"]); echo "文件名称:".$file["name"]."
    "; echo "文件类型:".$file["type"]."
    "; echo "文件大小:".($file["size"]/1024)."K
    "; echo "文件临时存储的位置:".$file["tmp_name"]."
    "; //保存上传的文件 if(file_exists("upload".$file["name"])){ echo $file["name"]."文件已经存在"; }else{ //如果目录不存在则将该文件上传 if(move_uploaded_file($file['tmp_name'],$name)){// move_uploaded_file($file['tmp_name'],"upload/".$file["name"]); echo '文件上传成功!'; echo '图片信息:'; print_r($file); } }

    两个解决办法:第一,不使用中文文件名;第二,对文件名进行编码转换,然后mb_substr就不会出现乱码了。

    substr只提供字符提取功能,没有提供字符过滤功能如果你要过滤数字的话,可以用str_replace函数如果你要过滤数字就这么写$number = array("0","1","2","3","4","5","6","7","8","9");str_replace($number,"",substr(md5(time()),0,5))这样,就是提当前时间的md5前5个字符,如果存在数字则将其替换成空字符串 比如2ef3c将变成 efc字幕方法类似!如果判断mysql有重复记录得看你数据库结构和你这个重复的标准是什么,没具体例子,不好说明

    0 讨论(0)
提交回复