BUSCADOR PHP dentro de un TX

Buen día mis estimados, Necesito de su amable y puntual ayuda con el siguiente tema:
Estoy haciendo un buscador en PHP.
El cual verifica o busca dentro de un documento TXT, ha funcionado y ya he efectuado pruebas, solamente deseo de su ayuda en lo siguiente:
En el documento .TXT donde busco hay muchas variables las cuales la mayoría son de 4 caracteres, bien si configuro el archivo PHP que busque en los promeros 4 espacios me imprime los resultados perfecto al buscar un código de 4 dígitos pero por ejemplo ingreso la búsqueda del código 67 me dice que no ha encontrado nada.
Deseo que me corrijan el código para que la búsqueda sea desde el primer dígito hasta el sexto pero que la busqeda sea exacta ya que si busco el 286 no me salga más nada que el 286.
El sistema cuenta con 3 archivos:
DATA.TXT
PGUNO.HTML
PGDOS.PHP
(De antemano agradezco su amable atención y me despido cordialmente)
********************************************
DATA.TXT
********************************************
Código tipo costo
30101 Canal 30 16.84
2865 Canal 11 16.83
286 Canal 11 16.84
67 Canal 66 16.84
********************************************
PGUNO.HTML
********************************************
<HTML>
<HEAD>
<TITLE> Consulta </TITLE>
</HEAD>
<BODY>
<FORM METHOD=POST ACTION="pgdos.php">
CODIGO:<br>
<INPUT TYPE="text" NAME="codigo" size="6" maxlength="6"> <br>
<INPUT TYPE="submit" value="Enviar" name="Enviar">
</FORM>
</BODY>
********************************************
PGDOS.PHP
********************************************
<?php
$i=0;
if((!empty($_POST['codigo']))|| isset($_POST['codigo'])){
$file = fopen ("data.txt", "r");
$v=0;
while (!feof($file)) {
$linea = fgets($file,41);
$cadena[$v]=$linea;
$v++;
}
fclose ($file);
foreach($cadena as $pasar)
{
if($_POST['codigo']==substr($pasar,0,4))
{
echo "<br>";
echo "Marcación : ".substr($pasar,0,6);
echo "<br>";
echo "Agregador : ".substr($pasar,7,25);
echo "<br>";
echo "Costo : ".substr($pasar,30,37);
echo "<br>";
echo '<A HREF="pguno.html">Anterior</A>';
$i=1;
}
}
}
if($i=='0')
{
echo "Su Nro de CODIGO no fué encontrado ....";
echo "<br> Intente nuevamente ";
echo '<A HREF="pguno.html">Anterior</A>';
}
?>

1 Respuesta

Respuesta
1
El problema es que hace una comparación literal, con espacios en blanco incluidos, así "67", no es igual a "67 ", cambia esto:
if($_POST['codigo']==substr($pasar,0,4))
por esto:
if($_POST['codigo']==rtrim(substr($pasar,0,4)))
Rtrim() elimina los espacios al final de una cadena con lo que ahora sí compara "67" = "67" también funciona con 286 y 2865 discriminándolos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas