Foros del Web » Programando para Internet » PHP »

Buscar una palabra en una serie de ficheros

Estas en el tema de Buscar una palabra en una serie de ficheros en el foro de PHP en Foros del Web. Quiero encontrar una palabra en una serie de ficheros y mostrar la línea en la que se encuentra en cada fichero. Lo que yo hago ...
  #1 (permalink)  
Antiguo 05/03/2007, 17:28
toz
 
Fecha de Ingreso: noviembre-2006
Mensajes: 83
Antigüedad: 17 años, 4 meses
Puntos: 0
Buscar una palabra en una serie de ficheros

Quiero encontrar una palabra en una serie de ficheros y mostrar la línea en la que se encuentra en cada fichero.

Lo que yo hago es leer linea a linea el fichero y comprobar con strpos si existe la palabra en esa linea pero esta función me está dando problemas.

Alguien me puede ayudar con la función o decirme otra forma de conseguir lo que quiero.

Gracias de antemano.
  #2 (permalink)  
Antiguo 05/03/2007, 18:04
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Buscar una palabra en una serie de ficheros

Pues amigo, esa es la función correcta, pero con el uso incorrecto, lo que sucede es que cuando el strpos encuentra la palabra en el primer caracter de la linea, pues devuelve cero, y si a este favor lo envaluas con if, pues lo interpreta como falso.

AJá, cual es la solución entonces? pues evúalo de esta manera:

$pos = strops($char, $line);

if ($pos === false) {
aqui no lo tomas en cuenta
} else {
aqui es la cosa
}

el signo: === significa que tiene el mismo valor y es del mismo tipo. Aqui está la solution.
  #3 (permalink)  
Antiguo 05/03/2007, 19:50
Avatar de TheViejo  
Fecha de Ingreso: marzo-2007
Ubicación: Delante de mi Vetusto PC.
Mensajes: 29
Antigüedad: 17 años, 1 mes
Puntos: 3
Re: Buscar una palabra en una serie de ficheros

Yo lo hago de esta manera :


if (strpos(' '.$Linea, $LoqueBuscas) > 0)
{
echo 'Encontrado...';
}
else
{
echo 'No Encontrado....'
}

De esta manera te ahorras una lineas de código y funciona bastante bien.
  #4 (permalink)  
Antiguo 05/03/2007, 20:41
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Re: Buscar una palabra en una serie de ficheros

Esa es una soluciòn, pero el uso correcto de la funciòn es asi: (Disculpen que usè una sintaxis equivocada en mi anterior participaciòn)


$rst = strpos($Linea, $LoqueBuscas);

if ($rst === false)
{
echo 'No Encontrado...';
} else {
echo 'Encontrado....'
}
  #5 (permalink)  
Antiguo 06/03/2007, 11:06
toz
 
Fecha de Ingreso: noviembre-2006
Mensajes: 83
Antigüedad: 17 años, 4 meses
Puntos: 0
Re: Buscar una palabra en una serie de ficheros

Yo lo hago así, el problema puede ser lo que me dices del ===?

for($i=2; $i<$argc; $i++)
{
$fd=fopen($argv[$i],"r");
while(!feof($fd)) //leo hasta que se acabe el fichero
{
$i=0;
$l=1; //nº de linea
$linea=fgets($fd); //leo una línea
$pos=strpos($linea,argv[1]); //busca en la línea la palabra
if($pos!=FALSE) //si ha encontrado la palabra
{
$tabla[$i]=$l; //guarda el nº de línea
$i++;
}
$l++; //incremento el nº de linea
$linea=fgets($fd); //leo una línea
}

for($i=0; $i<count($tabla); $i++)
echo "Fichero ".$argv[$i]." --> linea ".$tabla[$i]."\n";

fclose($fd);
}


Es que si lo pongo a tu forma, la función strpos() me sigue dando error, porque cuando comento esa línea no falla pero no me hace lo que quiero.

Alguna solución a mi código?

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:38.