$dirlist = scandir($dir);
foreach ($dirlist as $file){
//분명 여기시점에서 $file 값이 test.php 이 들어있거든요
if(is_file($file)){ //<= 그런데 왜 여기(if문)안으로 안들어올까요?
// $file 값은 여기에서 분명히 test.php입니다
어쩌구 저쩌구...
}
}
답변 6개 / 댓글 14개
$dir = './';
if ($dirlist = scandir($dir)) {
foreach ($dirlist as $file){
if (is_dir($file)) {
echo '<br>dir => ' . $file . '<br>';
continue;
} else if (is_file($file)) {
echo $file . '<br>';
} else
echo 'not file => ' . $file . '<br>';
}
} else
echo 'not dir';
답변에 대한 댓글 3개
슈와이님께 ^^
댓글이 단락 구분이 안지어져서
여기에 새로 글 써드립니다
$dir = './main';
if(is_dir($dir)) {
recursive_file_list($dir);
}else{
echo "not a directory";
exit;
}
function recursive_file_list($dir){
$dirlist = scandir($dir);
foreach ($dirlist as $file){
if(($file==".")||($file=="..")){
continue;
}
if(is_dir($file)) {
recursive_file_list($file);
}
if(is_file($file)){
$temp = new SplFileInfo($file);
if($temp->getExtension()=="php"){
my_process();
}
}else{
echo $file."is not a file<br>";
}
}
}
답변에 대한 댓글 2개
$dirlist = scandir($dir);
foreach ($dirlist as $file){
if ($file== '.' || $file == '..') continue;
if (is_dir($dir . '/' . $file)) {
recursive_file_list( $dir . '/' . $file);
} else if (is_file($dir . '/' . $file)) {
if (preg_match('/\.php$/', $file))
my_process();
} else
echo $file . " is not a file<br>";
}
}
참고사이트 http://php.net/manual/kr/function.is-file.php#86992
슈와이님 말씀대로 하니까 됩니다^^
그런데 궁금한게요... php.net 보면...is_file 함수는 패스까지 넣는 예제도없던데
is_file함수에 패스 넣어야 한다는 것은 혹시 어디를 보면 알수 있죠?^^
그리고 매개변수도 filename이라고 되어있던데요
최종적으로 무엇을 해야 되는지 이해가...
if문만 실행되면 되는건지 아니면
test.php 파일을 if문 안에서 사용해야 되는건가요?
아래처럼 echo 찍으면 어떻게 나오나요?
//분명 여기시점에서 $file 값이 test.php 이 들어있거든요
echo $file; <= 폴더내 전체 파일 출력됨
echo "<br>";
if(is_file($file)){ //<= 그런데 왜 여기(if문)안으로 안들어올까요?
// $file 값은 여기에서 분명히 test.php입니다
echo $file; <= 제일 마지막 파일만 출력되네요
답변에 대한 댓글 4개
if(is_file($dir.'/'.$file)){
}
혹시 이렇게 해도 안되나요?
저는 테스트하니 잘나오는데 다른 문제가 있는건지 모르겠네요.
파일에 test.php가 들어있다고 해도 경로가 같은건 아니죠
만약 처음에 들어가는 $dir이 실행하고 있는 php랑 다르면 경로가 들어가야죠 그 두개가 같다면 모르겠네요
도움이 못되고 댓글만 같네요
답변에 대한 댓글 2개
http://php.net/manual/kr/function.scandir.php 위 매뉴얼 처럼
현재디렉토리(.)와 상위디렉토리(..)가 포함되어 있어 그렇지 않나요?
답변에 대한 댓글 2개
아래처럼이요
if(($file==".")||($file=="..")){
continue;
}
혹시 파일이 php 실행하는 곳과 같은 경로에 있는건가요?
만약 경로가 다르다면 앞에 경로를 붙여주시면 됩니다.
보시면 파일 디렉토리 구분해서 저장 한 기본소스도 있으니 혹시나 참고 하시면 편하실거 같아서 올려둡니다.
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
내용)
저는 원래 아래처럼 짰습니다
슈와이님과는 다른 방법으로 짰고요
문제는 if_file($file)이 왜 false로 인식이 되는지...이해가 안갑니다.-_-
분명 $file값은 some_file.php 파일로 들어있거든요
수정) 댓글에 소스를 달아드렸더니...단락 구분이 안되어서
답변 글 형식으로 새로 올려드렸습니다