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有重复记录得看你数据库结构和你这个重复的标准是什么,没具体例子,不好说明