PHP - Leer TXT desde PHP con parrafos en vez de lineas

 
Vista:
sin imagen de perfil

Leer TXT desde PHP con parrafos en vez de lineas

Publicado por Silvio (1 intervención) el 25/05/2017 01:38:46
Tengo un problemita y no le encuentro la vuelta.

Aqui seguramente alguien me podrá decir para donde encaro:

Resulta que tengo un .txt (Archivo de Texto Plano) con el siguiente contenido:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
laps=0
flag=Green
flagimg=C:\Users\marklubi\Desktop\AppBackgrounds\bg_active_1@2x.jpg
 
pos1fname=William
pos1lname=Prince
pos1num=48
pos1time=17.883
pos1laps=5
pos1blap=3
pos1btime=15.969
pos1diff=
 
pos2fname=Colby
pos2lname=Horner
pos2num=15
pos2time=17.980
pos2laps=5
pos2blap=3
pos2btime=15.968
pos2diff=0.229
 
pos3fname=Ethan
pos3lname=Endicott
pos3num=00
pos3time=17.054
pos3laps=4
pos3blap=3
pos3btime=16.062
pos3diff=1.429
 
leaderfname=WILLIAM
leaderlname=PRINCE
leadernum=48
leaderblap=3
leaderbtime=15.969
 
fastestfname=CAMERON
fastestlname=YOUNG
fastestnum=34
fastestblap=3
fastestbtime=15.864

Pretendo leerlo desde PHP y luego con el generar un xml, o mostrarlo, lo que sea.

Se como hacerlo con
1
file()
y luego separar los campos. Pero como se podria hacer para este caso, donde no estan linea por linea, sino que digamos, en "parrafos".

El primero es unico. Los siguientes se repiten (entre 1 y 40 pueden ser) y los dos ultimos son tambien unicos.

Alguien tiene alguna idea de como encarar esto-?

Desde ya, agradezco al que pueda aportar una idea.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Leer TXT desde PHP con parrafos en vez de lineas

Publicado por kip (877 intervenciones) el 25/05/2017 05:45:50
Hola, no se te entiende muy bien que es lo que quieres, yo entendi que quieres en lugar de obtener un array con elementos por cada linea uno que tenga un parrafo como cada valor de elemento no ?

He hecho algo a ver si es lo que buscas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$archivo = file('archivo.txt');
$parrafos = array('');
array_walk($archivo, create_function('&$item', '$item = trim($item);'));
foreach ($archivo as $linea) {
    if ($linea) {
        $parrafos[key($parrafos)] .= "{$linea}\n";
    } else {
        $parrafos[] = '';
        next($parrafos);
    }
}
array_walk($parrafos, create_function('&$item', '$item = trim($item);'));
 
foreach ($parrafos as $parrafo) {
    printf("------PARRAFO------\n%s\n", $parrafo);
}

El printf del ultimo foreach mostrara algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
------PARRAFO------
laps=0
flag=Green
flagimg=C:\Users\marklubi\Desktop\AppBackgrounds\bg_active_1@2x.jpg
------PARRAFO------
pos1fname=William
pos1lname=Prince
pos1num=48
pos1time=17.883
pos1laps=5
pos1blap=3
pos1btime=15.969
pos1diff=
------PARRAFO------
pos2fname=Colby
pos2lname=Horner
pos2num=15
pos2time=17.980
pos2laps=5
pos2blap=3
pos2btime=15.968
pos2diff=0.229
------PARRAFO------
pos3fname=Ethan
pos3lname=Endicott
pos3num=00
pos3time=17.054
pos3laps=4
pos3blap=3
pos2btime=15.968
pos2diff=0.229
------PARRAFO------
leaderfname=WILLIAM
leaderlname=PRINCE
leadernum=48
leaderblap=3
leaderbtime=15.969
------PARRAFO------
fastestfname=CAMERON
fastestlname=YOUNG
fastestnum=34
fastestblap=3
fastestbtime=15.864

Y la estructura de $parrafos seria algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
Array
(
    [0] => laps=0
           flag=Green
           flagimg=C:\Users\marklubi\Desktop\AppBackgrounds\bg_active_1@2x.jpg
    [1] => pos1fname=William
           pos1lname=Prince
           pos1num=48
           pos1time=17.883
           pos1laps=5
    .....
    ...
    ..

Es lo que buscas ? Podrias explicarte mejor, tal vez con un ejemplo de como querrías el resultado ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar