这里对mb_strlen($ str,' utf-8')的引用不起作用。
<?php
function listFolderFiles($dir,$str){
$ffs = scandir($dir);
$matches;
foreach($ffs as $ff){
preg_match('/(html)$/',$ff,$matches);
if($ff != '.' && $ff != '..'){
if(is_dir($dir.'/'.$ff)) {
$str .= listFolderFiles($dir.'/'.$ff,$str);
} else if(count($matches) > 0) {
if (mb_strlen($str, 'utf-8') > 0) {
$str .= ','.$dir.'/'.$ff;
} else {
$str .= $dir.'/'.$ff;
}
}
}
}
return $str;
}
echo listFolderFiles('index','');
?>
当我回复mb_strlen($ str,&#39; utf-8)&#39;我得到了正确的长度。
我做错了什么?谢谢。
答案 0 :(得分:0)
实际上,连接每次扫描新目录时导致字符串复制和连接的递归调用。所以我删除了$str .= listFolderFiles($dir.'/'.$ff,$str);
- 并且已经修复了
<?php
function listFolderFiles($dir,$str){
$ffs = scandir($dir);
$matches;
foreach($ffs as $ff){
preg_match('/(html)$/',$ff,$matches);
if($ff != '.' && $ff != '..'){
if(is_dir($dir.'/'.$ff)) {
$str = listFolderFiles($dir.'/'.$ff,$str);
} else if(count($matches) > 0) {
if (strlen($str) == 0) {
$str .= $dir.'/'.$ff;
} else {
$str .= ','.$dir.'/'.$ff;
}
}
}
}
return $str;
}
echo listFolderFiles('index','');
?>