前段时间对学校一电影站做了点修改,动态生成文件给用户下载,其中需要向一个页面传递一些参数,有些是中文。今天再去看,发现在下载的时候文件名中的中文全部获取不到,php中使用的是basename函数,前几天还好好的。在我本机上也没问题,就是放到服务器上就出现这个问题,参数传递中的中文是没有问题的,页面中能获取到,问题就除在basename这个函数上,更深层的问题没找到,可能跟php的版本或者配置有关系吧。既然basename不行,那就换一种方式吧!在网上看到一个利用正则表达式匹配出uri中文件名及后缀的方法,这个方法效率比利用substr和strrpos来做要高的多。
function get_basename($filename){ return preg_replace('/^.+[\\\\\\/]/', '', $filename); }
正则表达式处理字符串的能力真的是十分的强大啊!看来必须要掌握好这个知识点。好久没用php,以前学的都忘得差不多了...