Find words between characters {}, and remove from text in PHP?

8
$comoesta = "{A,O} {portador,portadora} é o mais {especializada,especializado} para o serviço ."; 

If it's masculine:

$comodeveficar = "O portador é o mais especializado para o serviço  ";

If it's feminine:

$comodeveficar = "A portadora é o mais especializada para o serviço  ";
    
asked by anonymous 17.01.2017 / 13:08

2 answers

8

To do this, you need to follow a pattern, or the first is male or female, and the second is opposite the first:

$comoesta = "{O,A} {portador,portadora} é {o,a} mais {especializado,especializada} para o serviço .";

$resultadoMasculino = preg_replace("/\{([^\,]*)\,([^\}]*)\}/", "$1", $comoesta);

$resultadoFeminino = preg_replace("/\{([^\,]*)\,([^\}]*)\}/", "$2", $comoesta);

What I use is the preg_replace function to differentiate the masculine from the feminine, being $1 masculine, since the first value before the comma is male, and $2 feminine.

You can read more about regular expressions here .

Incidentally, an excellent question !!

    
17.01.2017 / 13:19
5

A very simple example using str_replace .

Code:

<?php

// 1 = Masculino, 2 = Feminino.
$codGenero = 1;

$comoesta = "{A,O} {portador,portadora} é {o,a} mais {especializada,especializado} para o serviço .";

if($codGenero == 1) {
    $comoesta = str_replace("{A,O}", "O", $comoesta);
    $comoesta = str_replace("{o,a}", "o", $comoesta);
    $comoesta = str_replace("{portador,portadora}", "portador", $comoesta);
    $comoesta = str_replace("{especializada,especializado}", "especializado", $comoesta);
}
else {
    $comoesta = str_replace("{A,O}", "A", $comoesta);
    $comoesta = str_replace("{o,a}", "a", $comoesta);
    $comoesta = str_replace("{portador,portadora}", "portadora", $comoesta);
    $comoesta = str_replace("{especializada,especializado}", "especializada", $comoesta);
}

echo $comoesta;

?>

Output if $codGenero = 1 :

O portador é o mais especializado para o serviço .

Output if $codGenero = 2 :

A portadora é a mais especializada para o serviço .

Source: myself.

    
17.01.2017 / 13:22