How to do a preg_replace with various conditions and changes?

Asked

Viewed 3,961 times

2

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

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

There are various conditions and various substitutions.

2 answers

3


You can do as follows abaico, passing two arrays as arguments to the function preg_replace, the first with substitution patterns and the second with 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: example of use.

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: example of use.

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
    );

Exit:

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.

Browser other questions tagged

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