Foros del Web » Programando para Internet » PHP »

Buscar Caracter en String

Estas en el tema de Buscar Caracter en String en el foro de PHP en Foros del Web. Saludos, Quisiera poder encontrar el caracter \n de un string.. mi string lo formo a partir de archivo .dat que leo mediante upload y lo ...
  #1 (permalink)  
Antiguo 21/12/2005, 12:33
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
Buscar Caracter en String

Saludos,

Quisiera poder encontrar el caracter \n de un string..

mi string lo formo a partir de archivo .dat que leo mediante upload y lo paso todo a una variable string.
La variable queda con una longitud de 330332 caracteres, y yo de aqui paso a
tomar los primeros 20 caracter y los guardo en uan variable, despues continuo con los siguientes 5 caracteres... 10 cracteres .. y asi sucesivamente.. pero ya al final me puden quedar entre 25 y 30 caracteres varia.. lo unico que divide entre saber si en esa linea son 25 caracteres o 30 es un salto de linea.
Ahora... por cuestion de que es probable que despues se inserte otro .dat el cual contenga 50 caracteres al final, quisiera poder condicinar que la ultima variable vaya del caracter 50 hasta que encuentre un salto de linea..


Es ahi donde esta mi duda, como puedo saber cuando ya encontre un salto de linea.

Gracias

** Al leer el archivo queda algo asi
999000001001121405001Y 5312 #0001 N 4198006002881A100302CACCADCABADDADADAAABABACACDADA


y asi siguen muchos con diferentes caracteres pero los separa un salto de linea
  #2 (permalink)  
Antiguo 21/12/2005, 12:53
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
la verdad que personalemente no comprendo bien que es lo que necesitas.
Lo que entiendo es que tenes un contenido dividido por saltos, y necesitas cortar ese contenido por los saltos?
Si es así, podes usar variadas funciones, pero una buena opción sería vectorizar este contenido usando explode:
Código PHP:
<?php
$puntero 
fopen"file.dat""r" );
$contenido fread$punterofilesize"file.dat" ) );
$vector explode"\n"$contenido );
foreach( 
$vector as $linea ){
echo 
$linea "<hr>"#Esto sera cada linea.
}
fclose$puntero );
?>
O mas o menos asi...cualquier cosa si no es esto reformula tu duda.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 21/12/2005, 13:07
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
el archivo es un contiene esto:
999000001001121405001Y 5312 #0001 N 4198006002881A100302CADCBDAAD CBBADACACBBBABDBADAA
999000002001121405001Y 5312 #0001 N 4198006001211A100302CACCADCABADDADADAAABABACACDADA
999000003001121405001Y 5312 #0001 N 4198006002161A100302CBCDCCBAABCBABDDBDACACAACADAAB
999000004001121405001Y 5312 #0001 N 4198006002031A100301BADCDCDBCCBCABDACCABBBAACCADAA
999000005001121405001Y 5312 #0001 N 1498006000851A100301DABADBDBDBBDABDABDABDBAADCCCDA
999000006001121405001Y 5312 #0001 N 4198006002051A100301AABCACDDBCBDCBDCBDABCBAAADCDAD
999000007001121405001Y 5312 #0001 N 0541980062761A100301CBBCCADBCACBCDABDACBBDADBAADCA
999000008001121405001Y 5312 #0001 N 4198006002511A100301DABCABDABABCDBCABCABDBAAADADDD
999000009001121405001Y 5312 #0001 N 4198006001991A100302CBCBCDBABADBABACBAABDBACADDADA
999000010001121405001Y 5312 #0001 N 4198006002121A100302CACBCCBADACBACADBACBABABABCDAB
999000011001121405001Y 5312 #0001 N 4198006002331A100301CCBCBCDABADAABABBDABCBACAAACAA
999000012001121405001Y 5312 #0001 N 4198006002791A100302CDBCBBADBBCBABBABABBCBADADABAA
999000013001121405001Y 5312 #0001 N 4198006001541A100302CBBBCBBADACAABDBBAABCACBADAAAA ...........


Claro que son mucho mas pero ... algo asi es ... entonces lo que hago yo es pasar eso a una base de datos.

de ahi saco.. que los primero 30 caracteres son una variable, luego los 5 caracteres.. despues 4 ... y 6 .. y de ahi los que queden ya sea 25.. 28.. o 30 son de un caracter que corresponden a lo que contesto la persona en el examen .. A B C D E etc ...

entones los examenes no siempre son de 29 reacitves pueden ser de mas, pero yo se que ya termine de leer preguntas cuando encuentro el salto de linea indicandome que es otro examen ya ..

me explico ? :S

bueno.. lo que ocupo es como saber que ya llegue al salto de linea


Código PHP:
$longitud=strlen($LecturaArchivo);
            for(
$x=0$x<$longitud$x++)
            {
                            if(
$LecturaArchivo[$x]=='\n') <--- eso no me funciona
                                
{
                               
// Paso las cadenas  la tabla y me paso al siguiente examen.

                                
}
                           else
                               {
                                     
//Voy armando las cadenas para de los tamaños diferentes
                               
}

                        } 

Última edición por kalolo; 21/12/2005 a las 13:14
  #4 (permalink)  
Antiguo 21/12/2005, 13:17
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
hay que ver donde (SO) se generó ese salto de línea (tal vez no sea \n, puede ser \r también)
Intenta con eso primero (poniendo en el $LecturaArchivo[$x]=='\r' or $LecturaArchivo[$x]=='\n' ).
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 21/12/2005, 13:22
Avatar de kalolo  
Fecha de Ingreso: abril-2005
Mensajes: 65
Antigüedad: 19 años
Puntos: 0
Gracias por tu pronta ayuda (Y)

me sirvio bastante lo primero que me diste, no para esto pero si para otras cosas que tengo que hacer.


Intente lo que me diste, y no funciono... pedi otro .dat .. y si .¬¬ creo que de tanto estarle moviendo con fopen y todo eso.. se "daño".

pero si ya funciono con n y con la r .

gracias de nuevo.
  #6 (permalink)  
Antiguo 21/12/2005, 13:24
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
No hay por que, me alegra saber que funciono (Y) (Si, la (Y) es un vicio también para mi como lo es el :D o el :P jajaja)
__________________
Mi punto de partida es Que Bueno Lo Nuevo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:57.