Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

[Resolvido] como varrer diretorios independente do nivel?

Recommended Posts

eu vi uma funcao aki no forum, q usava glob...so q esta funcao so varria diretorios com um nivel, tipo...

 

 

/*/

 

ou

 

/*/*/

 

eu gostaria de saber como varrer diretorios independente se o nivel esta /*/ ou se esta /*/*/

 

tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer ler um diretório independentemente do número de sub-diretórios? Se for, veja um exemplo usando uma função recursiva:

 

 

function lerDir($dir)
{
	$open = opendir($dir);
	
	while (false !== ($file = readdir($open)))
	{
		if ($file == '.' || $file == '..') continue;
		
		if (is_dir($dir . $file))
		{
			lerDir($dir . $file);
		}
		echo $dir . $file . "<br />"; 
	}
	closedir($open);
}

lerDir('dir/');

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao seria independente do numero de diretorio, e sim do nivel, a mesma funcao q varreria /*/, varreria /*/*/, e varreria /*/*/*/...

 

e nesse seu script, aparece diretorios junttos, sem a barra separando-os...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é apenas uma adaptação. A lógica é a mesma:

 

function lerDir($dir)
{
	$open = opendir($dir);
	
	while (false !== ($file = readdir($open)))
	{
		if ($file == '.' || $file == '..') continue;
		
		if (is_dir($dir . '/' . $file))
		{
			lerDir($dir . '/' . $file);
		}
		echo $dir . '/' . $file . "<br />";
	}
	closedir($open);
}

lerDir('dir');

Compartilhar este post


Link para o post
Compartilhar em outros sites

o diretorio q estou varrendo eh sys/

 

retirando a bara no final o resultado eh esse...

 

 

sysconfig.php

sys/lib/classclasse1.php

sys/lib/classglob.php

sys/lib/classphpdesigner_tmp1.php

sys/lib/classphpdesigner_tmp20.php

sys/lib/classphpdesigner_tmp21.php

sys/lib/classphpdesigner_tmp4.php

sys/libclass

sys/lib/errors/funcerr.func.mysql_sys.php

sys/lib/errors/funcphpdesigner_tmp22.php

sys/lib/errors/funcphpdesigner_tmp73.php

sys/lib/errorsfunc

sys/lib/errors/liberr.lib.mysql_sys.php

sys/lib/errorslib

sys/liberrors

sys/libfunc

sys/liblogs

syslib

sysmodulo

sysphpdesigner_tmp70.php

systent.php

sys/themaarq_thema

sys/themacss

sys/thema/imgsabe.php

sys/themaimg

sys/themajs

 

 

com a barra o resultado eh esse...

 

 

sys/config.php

sys//lib/classclasse1.php

sys//lib/classglob.php

sys//lib/classphpdesigner_tmp1.php

sys//lib/classphpdesigner_tmp20.php

sys//lib/classphpdesigner_tmp21.php

sys//lib/classphpdesigner_tmp4.php

sys//libclass

sys//lib/errors/funcerr.func.mysql_sys.php

sys//lib/errors/funcphpdesigner_tmp22.php

sys//lib/errors/funcphpdesigner_tmp73.php

sys//lib/errorsfunc

sys//lib/errors/liberr.lib.mysql_sys.php

sys//lib/errorslib

sys//liberrors

sys//libfunc

sys//liblogs

sys/lib

sys/modulo

sys/phpdesigner_tmp70.php

sys/tent.php

sys//themaarq_thema

sys//themacss

sys//thema/imgsabe.php

sys//themaimg

sys//themajs

sys/thema

 

 

 

 

eu at tentei criar uma funcao...

 

function varreNivelDir($num = 1){
	$nivel_dir = '*';
	for($i = 0; $i <= $num; $i++ ){
		$nivel_dir .= '/*';
	}
	return $nivel_dir;
	foreach (glob($nivel_dir) as $dir) {
   
	if(is_dir($dir)){
		
	echo "<b>".$dir."</b><br>";   
	
	
	}

}
}

q nao aparece nada...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função não retorna nada por causa desta linha:

 

return $nivel_dir;

Ela está retornando um valor antes de exibir o resultado.

 

 

 

Não entendi qual é sua dúvida. Estes arquivos não estão dentro do diretório sys?

 

syslib
sysmodulo
sysphpdesigner_tmp70.php
systent.php

O que há de errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use a função que postei neste post

 

 

Acabei de testar de novo aqui. Até criei sub-diretório homônimo, com arquivos com o mesmo prefixo. E está tudo certo. Veja:

 

ajax/ajax/teste1.txt
ajax/ajax/teste2.txt
ajax/ajax
ajax/ajax.js
ajax/ajaxteste.txt
ajax/projeto/actions.php
ajax/projeto/css/apresentacao.css
ajax/projeto/css/_notes/dwsync.xml
ajax/projeto/css/_notes
ajax/projeto/css
ajax/projeto/estrutura-da-tabela-agenda-contatos.sql
ajax/projeto/formulario.php
ajax/projeto/img/btnDelete.gif
ajax/projeto/img/btnEditar.gif
ajax/projeto/img/imgLoading.gif
ajax/projeto/img/_notes/dwsync.xml
ajax/projeto/img/_notes
ajax/projeto/img
ajax/projeto/includes/class.MySQL.php
ajax/projeto/includes/functions.php
ajax/projeto/includes/_notes/dwsync.xml
ajax/projeto/includes/_notes
ajax/projeto/includes
ajax/projeto/index.php
ajax/projeto/js/comportamentos.js
ajax/projeto/js/_notes/dwsync.xml
ajax/projeto/js/_notes
ajax/projeto/js
ajax/projeto/relatorio.php
ajax/projeto/_notes/dwsync.xml
ajax/projeto/_notes
ajax/projeto

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, obrigado, nao funfou antes deve ter sido pq eu devo nao ter copiado algo, eu nao copiei e colei...

 

nessa linha aki

 

so tirando duvida...

 

echo $dir . '/' . $file . "<br />";

eu coloquei

 

 

echo $dir . ' / ' . $file . "<br />";

pra motrar a barra un tanto separado dos nomes...e so alguns q ela ficou "distante", no demais ela ficou colada nos nomes, eh assim mesmo...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.