Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/11/2014, 13:53
Avatar de HackID1
HackID1
 
Fecha de Ingreso: febrero-2013
Ubicación: En Update
Mensajes: 492
Antigüedad: 11 años, 2 meses
Puntos: 17
Respuesta: Separar cadenas de cada linea de un fichero de texto

Hola buscando soluciones, encontré la forma de hacer lo que quiero la sustitución de cada palabra en su lugar.
Pero aún sigue fallando se descontrolan los datos no se porque y se muestran desordenados cuando el fichero es un csv.

Dejo aquí el código que estoy probando, por más que le doy vueltas no consigo saber porque falla y muestra las palabras en otro lugar que no es.

Código PHP:
Ver original
  1. $archivo = fopen("datos_xml.xml","a") or
  2.                     die("Error en la creacion del Fichero final.");
  3.  
  4.                        /*este seria el fichero con los datos separados por TAB.*/
  5.         $nombre_fichero = 'datos.csv';
  6.            
  7.         $fichero = fopen($nombre_fichero,'rb');
  8.            
  9.         $contenido = fread($fichero, filesize($nombre_fichero));
  10.            
  11.         fclose($fichero);
  12.  
  13.  
  14.         $cars = explode("\n", $contenido);
  15.         foreach($cars as $car) {
  16.             $car = str_getcsv($car);
  17.            
  18.             fwrite($archivo, '<item>
  19.                <title>'. $car[0] . '</title>
  20.                 <link>http://pagina.com/'.$car[1].'/</link>
  21.                 <description>'.$car[2].'</description>
  22.                <campo:clave>'.$car[3].'</campo:clave>
  23.                <texto>'.$car[4].'</texto>
  24.                <continua>'.$car[5].'</continua>
  25.        </item> ' . PHP_EOL );
  26.            } //cierro foreach.
  27.  
  28.  
  29.         fclose($archivo);

Bien con esto si tengo un fichero llamado datos.csv del cual provienen los campos a introducir aquí, debería mostrar los campos de cada columna (para eso use la función str_getcsv() ) cada uno tabulado.
Y cuando llegué al final de la primera linea, después de leer los 6 campos, los muestra ( el 1 campo es el 0, el segundo el 1 y asi hasta el 5). Pero produce errores o si los lee no muestra las partes correctamente.

Un error que tira es como el siguiente:

Código PHP:
Ver original
  1. Notice: Undefined offset: 1 in C:\xampp\htdocs\xmls\crea_xml2.php on line 71
La línea en este ejemplo haría coincidir con esta:

Código PHP:
Ver original
  1. <link>http://pagina.com/'.$car[1].'/</link>

¿Qué falla, porqué no muestra los datos correctamente si accedo al indice de cada uno, y son 6 campos (del 0 al 5).?

Espero puedan ayudarme un poco, llevo todo el día probando y nada que doy con esto, es para crear ficheros XML, pero pasando los datos directamente para rellenar cada campo.
__________________
Puntuar +1 es buena forma de dar las gracias. :P
Your Time is limited, so don't waste it living someone else´s life.
Por: HackID1