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

Asked

Viewed 123 times

8

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

If it’s male:

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

If it’s female:

$comodeveficar = "A portadora é o mais especializada para o serviço  ";

2 answers

8


To do this, you need to follow a pattern, either the first is male or female, and the second is opposite to 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 male, because the first value before the comma is male, and $2 feminine.

You can read more about regular expressions here.

By the way, excellent question!!

  • 3

    thank you very much, it worked!

  • cool! + 1 eventually preg_replace("/\{(.*?),(.*?)\}/", "$1", $a);

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;

?>

Exit if $codGenero = 1:

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

Exit if $codGenero = 2:

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

Source: myself.

  • The problem is that the words I won’t know which ones will come.

  • Oh yes, sorry, I thought they were fixed words. In this case it is better to use the preg_replace same, as Juniornunes said. Great question !

Browser other questions tagged

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