str_replace with php explodes

Asked

Viewed 525 times

1

> A sua viagem  Ref. reserva:   5SPGW9  Check My Trip

    Data de emissão:    06 Novembro 2015    
 .
 .
Viajante    Mrs Ana Paula Monteiro Malfati      Agência INTERCAMBIO OPERADORA DE PROGRAMAS EDUC
Rua Dos Tres Irmaos, 625
Vila Progredior  Cep:05615-190
SAO PAULO
Telefone    (11) 3149-8199
Fax (11) 3149-8199
E-mail  [email protected]



 .


 .
  Sexta-feira 29 Janeiro 2016   

I am trying to separate this text into 3 blocks, but it is not accepting the commands. I first exchange the points for " " and then I blow up the line breaks, but it doesn’t work.

$dados = str_replace(".", " ", $dados);
$dados = explode("\n\n", $dados);

$dados is where I store this text.

2 answers

1

First thing, using only one point '.' will present various conflicts seen in your text has [Ref.] [.com.br] he would end up doing the substitution in a wrong place.

As you just want to replace the points by spaces and create three blocks you could solve so:

$foo = 'A sua viagem  Ref reserva:   5SPGW9  Check My Trip
        Data de emissão:    06 Novembro 2015
      ..
      Viajante Mrs Ana Paula Monteiro Malfati
      Agência INTERCAMBIO OPERADORA DE PROGRAMAS EDUC
      Rua Dos Tres Irmaos, 625
      Vila Progredior  Cep:05615-190
      SAO PAULO
      Telefone    (11) 3149-8199
      Fax (11) 3149-8199
      E-mail  [email protected]
      ..
      Sexta-feira 29 Janeiro 2016';

$blocos = explode("..", $foo);
echo $blocos[0];
echo $blocos[1];
echo $blocos[2];

I added two points in a row to avoid conflict.

See working on Ideone

  • the problem is that this text comes in this format, so I need to treat it this way. And the line break from it comes as "."

  • Why I won -1 ?

  • it wasn’t me beast..

0

First: it is interesting to remove line breaks (as it is replaced by two consecutive points we will use this in our favor).

Second: let’s use the explode to separate our array where the line breaks are, generating an array with the three parts, which is this way:

Array
(
    [0] => > A sua viagem Ref. reserva: 5SPGW9 Check My Trip Data de emissão: 06 Novembro 2015
    [1] => Viajante Mrs Ana Paula Monteiro Malfati Agência INTERCAMBIO OPERADORA DE PROGRAMAS EDUC Rua Dos Tres Irmaos, 625 Vila Progredior Cep:05615-190 SAO PAULO Telefone (11) 3149-8199 Fax (11) 3149-8199 E-mail [email protected]
    [2] => Sexta-feira 29 Janeiro 2016 
)

Third: We use a strpos to remove part of the sentence, with the beginning starting from the 3 character (removing unwanted characters) to the word 'Trip''.

Fourth: we use strpos + substring again to remove only the text from the date of issue.

Fifth: we captured the message that is on the second line of the explode array that we made.

Sixth: we captured the date at the end of the exploded array we made.

Seventh: we show the data.

<?php
// Texto completo
$texto = "> A sua viagem  Ref. reserva:   5SPGW9  Check My Trip

    Data de emissão:    06 Novembro 2015    
 .
 .
Viajante    Mrs Ana Paula Monteiro Malfati      Agência INTERCAMBIO OPERADORA DE PROGRAMAS EDUC
Rua Dos Tres Irmaos, 625
Vila Progredior  Cep:05615-190
SAO PAULO
Telefone    (11) 3149-8199
Fax (11) 3149-8199
E-mail  [email protected]



 .


 .
  Sexta-feira 29 Janeiro 2016   ";

// Texto recebido sem quebras de linha
$string = preg_replace('/\s\s+/', ' ', $texto);
// Separa o texto em três partes
$ex = explode(" . . ", $string);
// Utilizamos o strpos para capturar do terceiro caractere (ou seja eliminamos o espaço o sinal de maior e mais um espaço do início) até a palavra Trip.  Assim capturamos o idReserva
$str_pos2 =  strpos($ex[0], ' Data de emissão:');
$txt_idReserva = substr($ex[0], 2, $str_pos2 -1);
// Utilizamos o strpos para capturar o que vem depois da palavra 'Trip' + espaço. Ou seja capturamos a data de emissão
$str_pos = strpos($ex[0], 'Trip ');
$txt_dtEmissao  = substr($ex[0], $str_pos + strlen('Trip '), strlen($ex[0]));
// Pegamos a mensagem
$txt_msg = $ex[1];
// Pegamos a data
$txt_dt = $ex[2];

echo "$txt_idReserva" . "<br>" . $txt_dtEmissao .  "<br>". $txt_msg . "<br>" . $txt_dt;

The code above will print:

A sua viagem Ref. reserva: 5SPGW9 Check My Trip 
Data de emissão: 06 Novembro 2015
Viajante Mrs Ana Paula Monteiro Malfati Agência INTERCAMBIO OPERADORA DE PROGRAMAS EDUC Rua Dos Tres Irmaos, 625 Vila Progredior Cep:05615-190 SAO PAULO Telefone (11) 3149-8199 Fax (11) 3149-8199 E-mail [email protected]
Sexta-feira 29 Janeiro 2016

You can use explode or other string functions to separate the third part of the text (I called the variable $txt_msg) which is the message containing passenger data.

Browser other questions tagged

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