Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Contar palabras de un fichero .txt con PHP

Estas en el tema de Contar palabras de un fichero .txt con PHP en el foro de PHP en Foros del Web. Ante todo, saludos. Os comento que sé perfectamente que hay una respuesta a una [URL="http://www.forosdelweb.com/f18/contar-palabras-archivo-txt-497915/"]cuestión similar[/URL] en el foro, pero os aclaro que por muy ...
  #1 (permalink)  
Antiguo 26/02/2014, 20:34
 
Fecha de Ingreso: febrero-2014
Mensajes: 4
Antigüedad: 10 años, 2 meses
Puntos: 0
Pregunta Contar palabras de un fichero .txt con PHP

Ante todo, saludos.

Os comento que sé perfectamente que hay una respuesta a una [URL="http://www.forosdelweb.com/f18/contar-palabras-archivo-txt-497915/"]cuestión similar[/URL] en el foro, pero os aclaro que por muy buena que sea, no me vale. Obviamente, la he probado y funciona, pero necesito otro método.

Tal y como especifico en el título, necesito contar las palabras de un fichero .txt que abro previamente con fopen. El código que estoy probando, es el siguiente:

--------------------------------------------------------------------------------------------------------

<?php
if ($opcion == "Contar") {
$id_fichero1=@fopen($fichero1, "r") // Abrimos el fichero en modo lectura
or die('<b><i>El fichero "fichero_test.txt" no se ha podido abrir.</i></b><br />');
echo '<b><i>El fichero "fichero_test.txt" existe y está abierto en modo lectura ("r").</i></b><br />';

echo '<br /><br />';
echo '<h2><u>Contar las palabras del fichero</u></h2>'; // Título que antecede al contenido del fichero

// Método largo para contar las palabras de un fichero.
// Usamos rewind para rebobinar el puntero al principio del fichero y el while con !feof para ir hasta su final. Así lo leemos completamente.
rewind($id_fichero1);
while (!feof($id_fichero1)){
$linea = fgets($id_fichero1);
$contador_pal = count(explode(" ", $linea));
}
echo "<b><i>El fichero contiene:</i></b><br /><br />";
echo "$contador_pal palabras";
fclose($id_fichero1); // Cerramos el fichero
}
?>



---------------------------------------------------------------------------------------------------------

El problema es que así no me cuenta más que una palabra. No acabo de comprender qué es lo que pasa. Lo que estoy haciendo es recoger cada línea del fichero y contar las palabras separadas por espacios en blanco con explode. Pero no funciona. ¿Alguien más experimentado me puede ayudar a corregirlo?

Gracias por vuestra ayuda.
  #2 (permalink)  
Antiguo 26/02/2014, 20:53
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: Contar palabras de un fichero .txt con PHP

con esto:
Código PHP:
 <?php
    
echo str_word_count(file_get_contents("archivo.txt"),0);
?>
las palabras no siempre bienen separadas por espacio en ocaciones vienen separadas por coma u otro signo de pintuacion.

tu codigo esta mal por que no estas sumando.
mira asi se hace:

Código PHP:
<?php
if ($opcion == "Contar") {
$id_fichero1=@fopen($fichero1"r"// Abrimos el fichero en modo lectura
or die('<b><i>El fichero "fichero_test.txt" no se ha podido abrir.</i></b><br />');
echo 
'<b><i>El fichero "fichero_test.txt" existe y está abierto en modo lectura ("r").</i></b><br />';

echo 
'<br /><br />';
echo 
'<h2><u>Contar las palabras del fichero</u></h2>'// Título que antecede al contenido del fichero

// Método largo para contar las palabras de un fichero.
// Usamos rewind para rebobinar el puntero al principio del fichero y el while con !feof para ir hasta su final. Así lo leemos completamente.
rewind($id_fichero1);
while (!
feof($id_fichero1)){
$linea fgets($id_fichero1);
$contador_pal += count(explode(" "$linea));
}
fclose($id_fichero1); // Cerramos el fichero
echo "<b><i>El fichero contiene:</i></b><br /><br />";
echo 
"$contador_pal palabras";
}
?>
usa Highlight para tu codigo
  #3 (permalink)  
Antiguo 26/02/2014, 21:13
 
Fecha de Ingreso: febrero-2014
Mensajes: 4
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Contar palabras de un fichero .txt con PHP

Gracias, enlinea777. Es sorprendente la importancia que supone pasar por alto un operador. Efectivamente, ahora cuenta las palabras del fichero. Aunque el problema es que la variable que está antes del + ahora arroja el error "Notice: Undefined variable: contador_pal in C:\xampp\htdocs\phpws\u4_ej_03\u4_ej_03_index.php on line 131". Es decir, la considera indefinida. ¿Cómo puedo solucionar eso?

Muchas gracias de nuevo.

P.S. No me había fijado en la opción Highlight, lo tendré en cuenta.
  #4 (permalink)  
Antiguo 26/02/2014, 21:34
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años
Puntos: 127
Respuesta: Contar palabras de un fichero .txt con PHP

declarándola antes.


Código PHP:
 <?php
if ($opcion == "Contar") {
$id_fichero1=@fopen($fichero1"r"// Abrimos el fichero en modo lectura
or die('<b><i>El fichero "fichero_test.txt" no se ha podido abrir.</i></b><br />');
echo 
'<b><i>El fichero "fichero_test.txt" existe y está abierto en modo lectura ("r").</i></b><br />';

echo 
'<br /><br />';
echo 
'<h2><u>Contar las palabras del fichero</u></h2>'// Título que antecede al contenido del fichero

// Método largo para contar las palabras de un fichero.
// Usamos rewind para rebobinar el puntero al principio del fichero y el while con !feof para ir hasta su final. Así lo leemos completamente.
rewind($id_fichero1);
$contador_pal=0;
while (!
feof($id_fichero1)){
$linea fgets($id_fichero1);
$contador_pal += count(explode(" "$linea));
}
fclose($id_fichero1); // Cerramos el fichero
echo "<b><i>El fichero contiene:</i></b><br /><br />";
echo 
"$contador_pal palabras";
}
?>
  #5 (permalink)  
Antiguo 26/02/2014, 21:39
 
Fecha de Ingreso: febrero-2014
Mensajes: 4
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Contar palabras de un fichero .txt con PHP

Por supuesto, estoy ya algo desorientado, ¡aquí son las 04:41 am!

Muchísimas gracias, enlinea777. Todo arreglado. ¡Un saludo!

Etiquetas: count, fichero, ficheros, palabras, txt
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 09:57.