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;
答案 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.