Respuesta al apartado b) del ejercicio CU00836B del curso php desde cero.
Aqui esta la función para obtener la suma, me tarde en poder encontrar una forma para validar que los valores fueran numeros. ctype_digit no me daba los valores esperados.
<?php// Funcion que busca el fichero asignado y suma los elementos numericos. Devuelve error en caso contrario// Coded by: Jonathan Ramos, jonathanramos@gmail.com.function obtenerSuma($ruta){ $suma = 0; $aux = 0; //Se revisa si existe el archivo // Esto puede hacerse tambien asi // $fp = fopen($ruta,"r") // or exit("ERROR!. No se puede encontrar el archivo ($ruta)") if (file_exists ($ruta) ){ $fp = fopen($ruta,"r"); // Asignamos el archivo al file pointer while( !feof($fp) ){ // Se leen los los numeros del archivo $aux = fgets($fp); // Se obtiene la linea del archivo //Checamos si es un numero con preg_match. Intente usar ctype_digit pero no validaba correctamente // if( ctype_digit($aux) ){ no funciono if( preg_match("/^[0-9]+$/",$aux) ){ $suma += $aux; } else { echo "ERROR! Se encontro un valor NO numerico, no se puede realizar la suma. "; fclose($fp); return 0; } } fclose($fp); return $suma; } else { echo "ERROR!. No se puede encontrar el archivo: ".$ruta; return 0; }}?>
A continuación el codigo que llama a la función:
<?php// Lectura de datos numericos de un archivo para realizar una suma.// Coded by: Jonathan Ramos, jonathanramos@gmail.com.$ruta = "datos_suma.txt";include 'obtenerSuma.php';echo ('Suma de los datos encontrados en archivo "'.$ruta.'". Dichos datos deben estar en uno en cada linea.<br/>');echo ('El resultado de la suma es:'.obtenerSuma($ruta) );?>
Aqui esta la pagina mostrando como funciona el codigo: http://utilities.byethost3.com/cursoPHP/archivo_ejercicio2.php