Este post es continuación de Limpieza de links erróneos: codificando un PHP, Ejecutando consultas de MySQL desde PHP y Leyendo un archivo desde PHP
En el anterior post de esta serie, en la que estamos construyendo un script que nos sirva para eliminar links erróneos (o sustituirlos por otros correctos), veíamos cómo leer una archivo, por ejemplo con todos esas URLs que hay que modificar. Eso nos permite automatizar el proceso de modificación de las entradas de la base de datos que contienen dichos links incorrectos.
Lo que nos ayudaría también es poder crear otro archivo de salida con aquellas URLs que no han sido modificadas, por cualquier razón, bien porque no se hayan encontrado en la base de datos o bien porque falló la actualización. Así iremos filtrando los links hasta que ese archivo de salida esté vacío o lo que es lo mismo ¡habremos limpiado todos los links!.
[php]
<?php
$file = file("entrada.txt");
$fp = fopen("salida.txt","a");
$contador_registros=0;
foreach ($file as $fila)
{
$linea = eregi_replace("[\n|\r|\n\r]", "", $fila);
fwrite($fp, $linea . PHP_EOL);
$contador_registros++;
}
echo "Numero de registros del archivo = ".$contador_registros;
fclose($fp);
?>
[/php]
Este script solo se diferencia del que vimos en la entrada anterior en que los registros leídos se graban en otro archivo, en lugar de mostrarlos en pantalla mediante la instrucción «echo».
El archivo de salida no se crea «de golpe» sino que lo vamos construyendo, línea a línea, a medida que recorremos todas los registros del archivo de entrada.
La función fopen abre un fichero para su lectura o escritura. La forma de acceso se determina, en este caso, con el valor «a» en el segundo parámetro (en el primer parámetro indicamos el nombre del archivo). Este modo de apertura significa que el archivo se abre solo para su escritura; coloca el puntero al fichero al final y si no existe se intenta crear. Esto último depende de la configuración del servidor y de los permisos tanto de la carpeta que lo contiene como del propio fichero. Lo mejor es crear el archivo en vacío y asignarle permiso de escritura «777».
Con el modo «a», sucesivas ejecuciones del script irán añadiendo resultados al archivo de salida. Si eso no nos interesa, pondremos modo «w» que coloca el puntero al fichero al principio del fichero y lo trunca a longitud cero.
La escritura de cada línea leída se realiza con la función fwrite. El primer parámetro es el archivo de entrada, en este caso se indica con la variable $fp, resultado de la función «fopen». El segundo parámetro es el registro a escribir que, como se puede observar, lleva el sufijo PHP_EOL que corresponde al símbolo ‘Fin De Línea’ correcto de la plataforma en uso (disponible desde PHP 4.3.10 y PHP 5.0.2).
Para concatenar la línea a escribir (contenida en la variable $linea) y el salto de línea (PHP_EOL) se utiliza el punto «.».
Finalmente, la función fclose cierra un puntero a un archivo abierto.
Deja una respuesta