de ctt a csv

25 11 2009

Después de leer en un blog todo el sufrimiento de pasar los contactos del WLmsn a thunderbird, decidí ponerme en acción y probar un poco de eso:
Transformar un .ctt(que es xml) a un csv y de la forma mas estúpida (sin expresiones regulares o cosas por el estilo)

<html>
<head>
<title>ctt a csv v1.0</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body{
font-size:17px;
background-color:#EEEEEE;
}
.nbox{
font-size:18px;
background-color:#FFFFFF;
}
.dbox{
font-size:19px;
color:#00FF00;
background-color:#CAE0F0;
}
#formu{
background-color:#CAE0F0;
width:80%;
}
.halfspn{
width:50%;
}
.SL{
width:20px;
height:5px;
background-color:white;
}
.ML{
width:20px;
height:5px;
background-color:#0000FF;
}
</style>
</head>

<body>
<div id="formu">
Convertir contactos de ctt a csv
<form name="datos" method="POST">
<table>
<tr>
<td class="halfspn">Archivo</td>
<td class="halfspn">
<input type="text" name="file" value="<?php echo $_POST['file']; ?>" class="nbox">
</td>
</tr>
</table>
<input type="hidden" name="exportar" value="GO!">
<input type="submit"  value="exportar" class="dbox">
</form>
</div>
<?
if($_POST['exportar'] && $_POST['file']){
	$mydotctt = $_POST['file'];
		$ext = '.'.strtolower(end(explode(".",$mydotctt)));
		$filetodownload = str_replace( $ext, '', $mydotctt );
	$filetodownload = $filetodownload.'_'.md5(uniqid(time())).'.csv';
	$fp = fopen ($filetodownload, "w");

	if ( !is_file( $mydotctt ) || !is_readable( $mydotctt ) ) {
		echo $mydotsql . " Archivo no encontrado.<br>";
		exit();
	}
	//primero, dividir en 2 desde despues de <contactlist>
	//luego hacer lo mismo hasta </contactlist>
	//luego leer  cada linea y en cada una dividir entre el primer '">' y el ultimo '</contact>' (quiza usar regExp (conseguir ayuda))
	//aqui se suma a $csv el resultado
	$ctt = rtrim( file_get_contents( $mydotctt ) );
	$a = explode( '<contactlist>', $ctt, 2);
	$b = explode( '</contactlist>', $a[1], 2);
	$ctt = $b[0];
	$sums = explode( "\n", $ctt );
	$csv = "";unset($a);unset($b);

	$culebron = '"Title","First Name","Middle Name","Last Name","Suffix","Company","Department","Job Title","Business Street","Business City","Business State","Business Postal Code","Business Country","Home Street","Home City","Home State","Home Postal Code","Home Country","Business Fax","Business Phone","Business Phone 2","Callback","Car Phone","Company Main Phone","Home Fax","Home Phone","Home Phone 2","ISDN","Mobile Phone","Other Fax","Other Phone","Pager","Primary Phone","Radio Phone","TTY/TDD Phone","Telex","Account","Anniversary","Assistant'."'s".' Name","Billing Information","Birthday","Business Address PO Box","Categories","Children","Company Yomi","Directory Server","E-mail Address","E-mail Type","E-mail Display Name"';
	fwrite($fp, $culebron);	
	$culebron = ',"E-mail 2 Address","E-mail 2 Type","E-mail 2 Display Name","E-mail 3 Address","E-mail 3 Type","E-mail 3 Display Name","Gender","Given Yomi","Government ID Number","Hobby","Home Address PO Box","Initials","Internet Free Busy","Keywords","Language","Location","Manager'."'s".' Name","Mileage","Notes","Office Location","Organizational ID Number","Other Address PO Box","Priority","Private","Profession","Referred By","Sensitivity","Spouse","Surname Yomi","User 1","User 2","Web Page"';
	fwrite($fp, $culebron);		
	fwrite($fp, "\n");

	foreach ( $sums as $line ) {
		$a = explode( '>', $line, 2);
		$b = explode( '</contact>', $a[1], 2);
		if($b[0] == ""){continue;}
		$csv = ',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"' . $b[0] . '","SMTP",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,"' . $b[0] . '",';
		fwrite($fp, $csv); fwrite($fp, "\n");
	}
	fclose($fp);
	echo "<br>CSV listo : <a href='".$filetodownload."'>".$filetodownload."</a>";
}
?>

</body>
</html>
Anuncios

Acciones

Information

5 responses

20 12 2009
Federico

Tenes alguna forma de pasar de txt a ctt?

21 12 2009
incendialaciudad

Si lo que tienes en el txt es lo mismo que lo que tendrías en un csv(contactos de mensajería/correos), podrías usar http://www.rhys.cx/cttconvert/csv2ctt.php

28 12 2009
incendialaciudad

O quizá http://www.ica-peru.com/contactos.rar te sea útil (gracias al fabuloso Dr.Software)

22 04 2011
Alberto

loco por favor no entiendo nada como lo puedo cambiar de ctt a csv pa poder importar mis contactos

6 06 2011
FCR

Resulta que debes correr el php que ofrezco, si no sabes como hacerlo no puedo ayudarte, tendria que dejarte poner tu archivo en mi pagina y no lo puedo hacer.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: