Doubt about PHP array

Asked

Viewed 64 times

1

I’m having a question about separating a content from a text file and separating by array.

For example, I have the following texts:

TEXTO1
<head> <edic><Diário Gaúcho 12/05/2013</edic>
<autor>Denise Waskow, [email protected]</autor>
</head>
<body>
<subtítulo>Para celebrar</subtítulo>
<título>Mães e filhos se divertem em atividades culturais no Parque da Redenção</título>
Jogos de mesa, futebol, brinquedos infláveis, teatro, dança e uma série de outras brincadeiras movimentaram o domingo no parque
Criançada aproveitou o domingo nos brinquedos
Denise Waskow
[email protected]
Se existe algo que deixa toda mãe realizada é ver que o filho está feliz. E quem levou a prole neste domingo à Redenção ganhou esse presente para celebrar o Dia das Mães. 
Jogos de mesa, futebol, brinquedos infláveis, teatro, dança e uma série de outras brincadeiras movimentaram o domingo, em uma ação promovida pela Secretaria Municipal de Esporte, Recreação e Lazer da Capital. A gurizada aproveitou muito, e as mamães se emocionaram com a alegria deles.
<subtítulo>Diversão nos brinquedos</subtítulo>
Enquanto a pequena Amanda, três anos, criava coragem para descer no tobogã inflável, a mãe, a babá Roselaine Pereira, 30 anos, ficava na parte de baixo do brinquedo, incentivando a menina a descer, fotografando e se divertindo junto.  
- É maravilhoso, é ótimo. O melhor presente é isso, a felicidade deles - derrete-se.
O filho mais velho, Jhonattan, 13 anos, já não está mais na fase de brincar, mas nem por isso deixou de acompanhar a mãe. Enquanto a irmã caçula passava de um brinquedo para o outro, ele contou como homenageou Roselaine no início do domingo: 
- Eu disse que eu amo ela.
<subtítulo>Uma torcida especial</subtítulo>
"Vai Joana, vai Joana!". Ao lado do espaço demarcado para o futebol, a massoterapeuta Tânia Regina Horta, 46 anos, incentivava a filha caçula, de seis anos, no esporte. E apesar de a mãe ser gremista e a filha colorada, não existe rivalidade. O que conta nessa relação, claro, é o amor. 
- A mãe que está sendo homenageada e são os filhos que se divertem. Está ótimo, o melhor é curtir a companhia deles - elogia. 
Depois de uma manhã inteira de brincadeiras, o planejamento de Tânia era encontrar os dois filhos mais velhos, além dos dois enteados, para o tradicional almoço de Dia das Mães.
</body>

TEXTO2
<head> <edic><Diário Gaúcho 14/05/2013</edic>
<autor></autor>
</head>
<body>
<subtítulo>Colisão</subtítulo>
<título>Sargento dos Bombeiros morre em acidente na zona sul da Capital</título>
Itiberê Poty de Abreu perdeu o controle da moto após colidir com um carro
Trânsito ficou em meia pista na Avenida Wenceslau Escobar
Um motociclista morreu após colidir hoje com um carro na Avenida Wenceslau Escobar, na zona sul de Porto Alegre. Itiberê Poty de Abreu, 49 anos, era sargento do Corpo de Bombeiros.
A vítima subia a avenida quando colidiu com o carro da frente e perdeu o controle da moto. Um outro veículo que trafegava no sentido contrário não conseguiu desviar e também se envolveu no acidente. O motociclista morreu no local.
O trânsito ficou em meia pista na Avenida Wenceslau Escobar e seria liberado após a remoção da vítima.
</body>

They start with TEXTO1(2, ...) and end with the /body.

It is possible to separate them into arrays different? If possible, how to separate and make it go on creating the arrays?

<?PHP

Array1 = "vai estar o texto01";
Array2 = "vai estar o texto02";
....
?>
  • Why arrays and not two strings or a array with two strings?

  • Because I am working with different text files, where each file has between 60 / 130 texts with the same formatting. Thus, the easiest way I found to work were the arrays.

  • The point is not to use an array or not, but rather if you are thinking of something other than this: array('texto1' => 'Texto...', 'texto2' => 'Text...', ...);, then your question is not clear enough.

  • In fact, it was in this concept that you showed that I would like to do. But if so, it is possible to check the content that is in the 'text1'?

1 answer

1


One option is to use the function preg_match_all together with the expression |texto\d+(.+?)<\/body>|is to get the content that is between texto followed by a number and </body>, the modifier i is to distinguish between lower and upper case letters, and s is to indicate that the . can also capture new line.

preg_match_all('|texto\d+(.+?)<\/body>|is', $conteudo, $resultado);
$textos = $resultado[1];

Where the variable conteudo contains the texts you want to separate.

If you want to access the first text for example, use textos[0], the second textos[1] and so on.

To access the text indicating the key, such as the Kenny Rafael suggested, you can do so:

preg_match_all('|texto\d+(.+?)<\/body>|is', $conteudo, $resultado);
$textos = [];

foreach ($resultado[1] as $indice => $texto) {
    $textos["texto$indice"] = explode("\n", $texto);
}

foreach ($textos['texto1'] as $linha) { // Acessando as linhas do texto1
    echo $linha . "\n";
}

See DEMO

Browser other questions tagged

You are not signed in. Login or sign up in order to post.