$data = file_get_contents($file_names);中$file_names中指向的路径中包含中文文件名称就报错[function.file-get-contents]: failed to open stream: No such file or directory不用中文的文件名就可以,纠结啊!不能重命名文件的

解决方案 »

  1.   

    $file_names = "D:/我的文档/Youku Files\download/[LIVE]汪峰.-.春天里.flv";
    $s = file_get_contents($file_names);
    echo strlen($s);//7216760不存在你说的问题,当然你要正确的书写文件名(包括语言编码)
      

  2.   

    $data = file_get_contents($file_names);
    $a = "/charset(\s*)=(\s*)[\w|-]{0,20}/";
    preg_match($a, $data, $match);
    $data2 = str_replace($match[0],"charset=gb2312",$data);
    file_put_contents($file_names,$data2);
    echo "<script type='text/javascript'>location.href='$file_names';</script>";完整的代码是这样的,下面的js已经把文件打开了,这证明路径应该是对的!我读取文件的目的其实只想改一下里面的编码,可是文件名称用中文的就没有被正则替换,英文的就成功替换了!
      

  3.   

    关键在于你的 $file_names 中的文件名的编码要与操作系统的语言编码一致
      

  4.   

    中文的时候看下echo strlen($data);有没有取到内容
      

  5.   

    iconv("utf-8", "gbk",file_get_contents('url'));
    先换成操作系统的编码试试能打开文件内容吗?你这主要是中文路径打不开文件,获取不到内容所以无法替换吧
      

  6.   

    对的!中文名称的时候,strlen($data)没有内容,英文就可以了!
      

  7.   

    本帖最后由 xuzuning 于 2012-05-17 16:29:00 编辑
      

  8.   

    本帖最后由 xuzuning 于 2012-05-18 07:35:45 编辑
      

  9.   

    php版本是PHP5.3.10我不编码转换出来的名称就都是乱码了!的确pathinfo好使!