Hola a todos,
tengo entre manos un programa que coge valores de un kml (un archivo exportado que almacena polígonos dibujados en Google Earth), y los saca en .txt
El problema es que hay un salto de línea odioso que me está j*diendo la estructura del archivo txt.
El código de php al completo es este. Sólo pongo el archivo que gestiona el archivo subido, que es un formulario Html sin más misterio.
Código PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Uploaded</title>
</head>
<?php
//Subir archivo//////////////////////////////////////////////
//Imprimir datos del archivo
$nombre = "Coordenadas_".date("dmy_His").".kml";
echo "Nombre Temporal: ".$_FILES['archivo']['tmp_name']."<br>";
echo "Nombre del Archivo: ". $_FILES['archivo']['name']."<br>";
echo "Tipo de Archivo: ".$_FILES['archivo']['type']."<br>";
echo "Tamaño: ".number_format(($_FILES['archivo']['size']/1024),2)." KB<br>";
echo "Nombre del archivo: ".$nombre."<br><br>";
//Mover el archivo al destino
$destino = '/Applications/XAMPP/xamppfiles/htdocs/Conversor/archivos/'.$nombre;
$origen = $_FILES['archivo']['tmp_name'];
move_uploaded_file($origen,$destino);
//Fin subir archivo/////////////////////////////////////////
//Leer KML//////////////////////////////////////////////////
if($sx = @simplexml_load_file($destino)){
$salida = "";
$ruta = $sx->Document->Placemark->Polygon->outerBoundaryIs->LinearRing;
$coord = $ruta->coordinates;
$coord = str_replace(",0",",",$coord);
//echo $coord;
$listaCoord = explode(",",$coord);
//echo $listaCoord[0].";";
//echo $listaCoord[1]."<br>";
$interruptor = true;
$final = "Point_id;X;Y"."<br>";
$contador = 1;
for($i=0;$i<count($listaCoord);$i++){
if($interruptor){
$final = $final.$contador.";".strval($listaCoord[$i]).";".strval($listaCoord[$i+1])."<br>";
$i++;
$contador++;
$interruptor = false;
}
else{
$final = $final.$contador.";".strval($listaCoord[$i]).";".strval($listaCoord[$i+1])."<br>";
$i++;
$contador++;
$interruptor = true;
}
}
echo $final;
$final = str_replace("<br>","\n",str_replace("; ",";",$final));
}
else{
echo "<b>Error al leer el archivo</b>";
}
//Fin Leer KML//////////////////////////////////////////////
//Crear txt/////////////////////////////////////////////////
$archivo = "archivos/".str_replace(".kml",".txt",$nombre);
$fch = fopen($archivo, "w");
fwrite($fch, $final);
fclose($fch);
//Fin crear txt/////////////////////////////////////////////
?>
<body>
<br />
<br />
<a href="Formulario de subida.php">Volver</a>
</body>
</html>
Dejo una captura de pantalla de cómo aparece en el archivo txt y cómo aparece en la web:
De lo que quiero
deshacerme es del
salto de línea y las tabulaciones que hay entre el 1; y las coordenadas
Creo fielmente que el error está en estas líneas:
Código PHP:
$interruptor = true;
$final = "Point_id;X;Y"."<br>";
$contador = 1;
for($i=0;$i<count($listaCoord);$i++){
if($interruptor){
$final = $final.$contador.";".strval($listaCoord[$i]).";".strval($listaCoord[$i+1])."<br>";
$i++;
$contador++;
$interruptor = false;
}
else{
$final = $final.$contador.";".strval($listaCoord[$i]).";".strval($listaCoord[$i+1])."<br>";
$i++;
$contador++;
$interruptor = true;
}
}
echo $final;
$final = str_replace("<br>","\n",str_replace("; ",";",$final));