读取文件将文本插入mysql

时间:2012-02-24 21:46:21

标签: php regex

myFolderi有数千个图像文件,其中包含该名称的关键字文字。我试图从图像列表中读取并将文本上传到dB字段。问题是,有些文字有像l'Été这样的utf8字符,就像这样出现了 t

如何阅读外国字符,以便重音符号插入dB字段? 这就是我现在处理它的方式

function ListFiles($dir) {

if($dh = opendir($dir)) {

    $files = Array();
    $inner_files = Array();

    while($file = readdir($dh)) {
        if($file != "." && $file != ".." && $file[0] != '.') {
            if(is_dir($dir . "/" . $file)) {
                $inner_files = ListFiles($dir . "/" . $file);   
                if(is_array($inner_files)) $files = array_merge($files, $inner_files); 
            } else {
                array_push($files, $dir . "/" . $file);//$dir = directory name
                //array_push($files, $dir);
            }
        }               
    }
    closedir($dh);
    return $files;
}
}

   foreach (ListFiles('../../myDirectory') as $key=>$file){
//$file = preg_replace( '@[^\0-\x80]@u',"", $file );
  echo $file ."<br />";
} 

这产生了相同的结果

$str = "l’Été";
utf8_decode($str);
echo $str;

1 个答案:

答案 0 :(得分:0)

这个解决方案可能对你有用,它会循环遍历directoy中的所有文件,然后通过任何找到的目录进行递归,直到它最终得到大量文件。

我添加了一些您可能希望更改的点,例如mutli或单维数组(所有这些都取决于您是否需要维护文件夹结构。

以及如果您希望在将文件名保存到db时保存文件扩展名。

<强>代码

function recursive_search_dir($dir) {
  if ($handle = opendir($dir)) {
  while (false !== ($file = readdir($handle))) {
     if (in_array($file,array(".","..")))
        continue; // We dont want to do anything with parent / current directory.

     if (is_dir($file)) {
        $result[] = recursive_search_dir($file); // Multi-dimension
           # OR
        array_merge($result,recursive_search_dir($file));// Single-dimension if you dont care about folder structure.
     } else {
        $result[] = utf8_decode($file); // full file name ( includes extention )
           # OR 
        $result[] = utf8_decode(filename($file,PATHINFO_FILENAME)); // if you only want to capture the name and not the extention.
     }
  }
  closedir($handle);
  }
  return $result;
}
$files = recursive_search_dir("."); // recursively searcht the current directory.