How to make a preg_replace with several conditions and several changes?

2

How to make a PREG_REPLACE having several search and multiple substitutions at the same time

For example, I want to ('/(BR|BL)/', 'B') if you have BR and BL replace with B and also ('/PH/', 'F') if you have PH replace with F

There are several conditions and several substitutions.

    
asked by anonymous 02.09.2016 / 17:54

2 answers

3

You can do this as follows, by passing two arrays as arguments for the preg_replace function, the first with the substitution patterns, and the second with the substitution values:

<?php
$string = 'Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográfica e de impressos, e vem sendo utilizado desde o século XVI, quando um impressor desconhecido pegou uma bandeja de tipos e os embaralhou para fazer um livro de modelos de tipos. ';

//Array com os padrões de substituição:
$patterns = array(
    '/(Lorem Ipsum|século XVI)/',//Ou '/(Lorem Ipsum|século XVI)/i' caso você queira que seja case insensitive, não diferencia maiusculo de minusculo.
    '/tipográfica/',//Ou '/tipográfica/i'
    '/livro/'//Ou '/livro/i'
);
//A partir da versão PHP 5.4 você também pode usar a sintaxe contraída de array:
//$patterns = ['/(Lorem Ipsum|século XVI)/', '/tipográfica/', '/livro/'];


//Array com os valores de substituição:
$replacements = array(
    '<b>$1</b>',
    '<b>tipográfica</b>',
    '<b>livro</b>'
);
//Sintaxe contraída de array:
//$replacements = ['<b>$1</b>', '<b>tipográfica</b>', '<b>livro</b>'];

echo preg_replace($patterns, $replacements, $string);

Example: use sample.

In your case it should be as follows, for example:

<?php

$string = 'Lorem Ipsum é BR simplesmente uma simulação de BL texto da indústria BL tipográfica e de impressos, e vem sendo utilizado PH desde o PH século XVI. ';

//Array com os padrões de substituição:
$patterns = array(
    '/(BR|BL)/',//Ou '/(BR|BL)/i'
    '/PH/',//Ou '/PH/i'
);
//Sintaxe contraída de array:
//$patterns = ['/(BR|BL)/','/PH/'];

//Array com os valores de substituição:
$replacements = array(
    'B',
    'L',
);
//Sintaxe contraída de array:
//$replacements = ['B', 'L'];

echo preg_replace($patterns, $replacements, $string);

Example: use sample.

    
02.09.2016 / 18:01
2
$texto = 'BLZ vou mudar o que tiver BR para B e o que tiver BL também. Além disso, quero mudar o que tiver PH para L, mas, será que pega com letras minúsculas? -> Teste: ph br bl';


echo 
    preg_replace(
        ['/(BR|BL)/i','/PH/i',], 
        ['B', 'L',],
        $texto
    );

Output:

BZ vou mudar o que tiver B para B e o que tiver B tambm. Alm disso, quero mudar o que tiver L para L, mas ser que pega com letras minsculas? -> Teste: L B B

i is a modifier for CASE INSENSITIVE .

    
02.09.2016 / 18:38