Tengo un problema muy recurrente y me gustaría que me ayudaran a resolverlo.
Muchas veces necesito procesar información de archivos en Excel ya sea para compararlos o para insertarlos a una BD o a otro archivo, para lo cual el procedimiento que habitualmente ocupo es el siguiente.
- Guardo el archivo como texto separado por tabuladores
- Con un script php separo los campos con un explode.
- Evalúo cada linea y la inserto, la comparo o lo que deba hacer.
Casi siempre la importancia radica en eliminar los registros repetidos, generalmente cuando hay que insertar en la BD yo hago ese campo como único para prevenir que se inserte más de una vez el mismo registro, además de que en el script muchas veces comparo las lineas (cabe señalar que cuando hago esto, ordeno el archivo de manera que los repetidos queden consecutivos) para que no entren en el ciclo si es que es igual al anterior.
El problema es que siempre hay algunos datos que por mas que les paso un trim() tanto en script como en SQL, llevan un espacio en blanco al inicio o al final de la línea que hace que registros iguales sean diferentes para el sistema.
Aquí les pongo un pequeño ejemplo, ojalá puedan ayudarme y decirme como solucionar este problema.
Código PHP:
<?php
$file = 'facanterior.txt';
$emp = "";
$rfc = "";
if($link = fopen($file,"r"))
{
while(!feof($link))
{
$arrmailn = explode("\t",fgets($link,4096));
$emp2 = trim($arrmailn[1]);
$rfc2 = trim($arrmailn[2]);
$cp = $arrmailn[3];
if($emp <> eregi_replace(" ","",$emp2) && $rfc <> eregi_replace(" ","",$rfc2))
{
$emp = eregi_replace(" ","",$emp2);
$rfc = eregi_replace(" ","",$rfc2);
echo eregi_replace(" ","",$emp2).eregi_replace(" ","",$rfc2)."<br>";
}
}
}
fclose($link);
Código:
Claramente se vé que son registros iguales, salvo que en este caso hay un espacio, bien al final del nombre, o al principio del RFC, pero si se supone que ya le pase el trim() mas el eregi_replace() para quitarselos, ¿porque siguen ahí?ABCOMUNICACION,S.A.DEC.V.ACO000710QD7 ABCOMUNICACION,S.A.DEC.V. ACO000710QD7 ZUÑIGAMIJANGOSGLORIAGRISELDAZUMG600315GMA ZUÑIGAMIJANGOSGLORIAGRISELDA ZUMG600315GMA ZENTELLAQUEROCONSULTORESCONTABLES,S.C.ZQC891207IQA ZENTELLAQUEROCONSULTORESCONTABLES,S.C. ZQC891207IQA
Mucho agradeceré su ayuda porque como lo dije al principio, es un problema recurrente.
Saludos a todos.