Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/07/2012, 09:59
villano4
 
Fecha de Ingreso: septiembre-2011
Ubicación: Yucatán
Mensajes: 42
Antigüedad: 12 años, 8 meses
Puntos: 8
Busqueda en codigo para encontrar cadena especifica

Les traigo este código, que uso para hacer una busqueda de una cadena, en todos los archivos de php, css o js, en todos los subdirectorios del directorio proporcionado.

Los resultados nos muestran la ruta, nombre del archivo, numero de linea y el codigo en dicha linea donde se encontró la coincidencia.

Ruta: midirectorio/
Cadena: $variable
Archivos:
PHP x
CSS
JS
ENVIAR
La ruta debe terminar en /

Código PHP:
<?php
if (!empty($_POST['submit'])){
    function 
listar_directorios_ruta($ruta,$cade,$tipos){
        
// abrir un directorio y listarlo recursivo
        
if (is_dir($ruta)) {
            if (
$dh opendir($ruta)) {
                while ((
$file readdir($dh)) !== false) {
                    
//esta línea la utilizaríamos si queremos listar todo lo que hay en el directorio
                    //mostraría tanto archivos como directorios
                    
if ($file!="." && $file!=".."){
                        if (
is_dir($ruta $file)){
                            
//solo si el archivo es un directorio, distinto que "." y ".."           
                            
listar_directorios_ruta($ruta $file "/",$cade,$tipos);
                        }else{
                            
$files=fopen($ruta.$file,'r');
                            foreach (
$tipos as $tipo){
                                if  (
strpos($file,$tipo)>0){
                                    
$muestra=true;
                                    break;
                                }else 
$muestra=false;
                            }
                            if (
$muestra){
                                
$i=1;
                                while (!
feof($files)){
                                    
$line=fgets($files);
                                    
$line=str_replace('<','&lt;',$line);
                                    
$line=str_replace('>','&gt;',$line);
                                    if (
strpos($line,$cade)>0) echo "$ruta$file -$i - $line<br />";
                                    
$i++;
                                }
                            }
                        }
                    }
                }
                
closedir($dh);
            }
        }else echo 
"<br>No es ruta valida";
    } 
    
listar_directorios_ruta($_POST['ruta'],$_POST['cade'],$_POST['tipo']);
}else{
?>
<form method="POST" action="busca.php">
    Ruta: <input type="text" name="ruta"/><br />
    Cadena: <input type="text" name="cade"/><br />
    Archivos: <br />
    PHP<input type="checkbox" name="tipo[]" value="php"/>
    JS<input type="checkbox" name="tipo[]" value="js"/>
    CSS<input type="checkbox" name="tipo[]" value="css"/><br />
    <input type="submit" name="submit" value="enviar"/>
</form>
<?}?>
Acepto críticas y sugerencias para mejorarlo.