mb_eregi_replace

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

mb_eregi_replaceSubstituir expressão regular com suporte multibyte, ignorando maiúsculas e minúsculas

Descrição

mb_eregi_replace(
    string $pattern,
    string $replacement,
    string $string,
    ?string $options = null
): string|false|null

Examina string em busca de correspondências com pattern, e substitui o texto correspondido por replacement.

Parâmetros

pattern

O padrão de expressão regular. Caracteres multibyte podem ser usados. A diferenciação entre maiúsculas e minúsculas será ignorada.

replacement

O texto de substituição.

string

A string pesquisada.

options
A opção de pesquisa. Veja mb_regex_set_options() para explicação.

Valor Retornado

A string resultante ou false em caso de erro. Se string não for válida para a codificação atual, null é retornado.

Registro de Alterações

Versão Descrição
8.0.0 options é anulável agora.
7.1.0 A função verifica se string é válida para a codificação atual.
7.1.0 O modificador e foi depreciado.

Notas

Nota:

A codificação interna ou a codificação de caracteres especificada por mb_regex_encoding() será usada como a codificação de caracteres para esta função.

Aviso

Nunca use o modificador e ao trabalhar com entradas não confiáveis. Nenhum escape automático acontecerá (como é conhecido em preg_replace()). Não cuidar disso provavelmente criará vulnerabilidades de execução remota de código na sua aplicação.

Veja Também

add a note add a note

User Contributed Notes 3 notes

up
8
kirilatpillaxdotcom
12 years ago
To highlight words in multi-byte text:

<?php
$s
= 'Алабала';
$f = 'а';
echo
preg_replace('/('.$f.')/iu', '<b>$1</b>', $s);
?>
up
4
cat at feelthehouse dot ru
16 years ago
Transliterator for cyrillic-to-latin letters for UTF chars:

<?php
function do_translit($st) {
   
$replacement = array(
       
"й"=>"i","ц"=>"c","у"=>"u","к"=>"k","е"=>"e","н"=>"n",
       
"г"=>"g","ш"=>"sh","щ"=>"sh","з"=>"z","х"=>"x","ъ"=>"\'",
       
"ф"=>"f","ы"=>"i","в"=>"v","а"=>"a","п"=>"p","р"=>"r",
       
"о"=>"o","л"=>"l","д"=>"d","ж"=>"zh","э"=>"ie","ё"=>"e",
       
"я"=>"ya","ч"=>"ch","с"=>"c","м"=>"m","и"=>"i","т"=>"t",
       
"ь"=>"\'","б"=>"b","ю"=>"yu",
       
"Й"=>"I","Ц"=>"C","У"=>"U","К"=>"K","Е"=>"E","Н"=>"N",
       
"Г"=>"G","Ш"=>"SH","Щ"=>"SH","З"=>"Z","Х"=>"X","Ъ"=>"\'",
       
"Ф"=>"F","Ы"=>"I","В"=>"V","А"=>"A","П"=>"P","Р"=>"R",
       
"О"=>"O","Л"=>"L","Д"=>"D","Ж"=>"ZH","Э"=>"IE","Ё"=>"E",
       
"Я"=>"YA","Ч"=>"CH","С"=>"C","М"=>"M","И"=>"I","Т"=>"T",
       
"Ь"=>"\'","Б"=>"B","Ю"=>"YU",
    );
   
    foreach(
$replacement as $i=>$u) {
       
$st = mb_eregi_replace($i,$u,$st);
    }
    return
$st;
}
?>
up
-10
its2dark2c at yahoo dot com
13 years ago
when trying to find a way to strip newline from a multibyte UTF-8 string i got to this function just to discover later that POSIX don't "do" newline so i can't strip them, examples of what i tried are : \r\n , \\r\\n , (\\r\\n) (\\r|\\n)

and got no result
so since i wanted something like mb_nl2br() that's simple i wrote this little recursive function for UTF-8:

<?php
function mb_str_replace($find,$replace,&$str)
{
$i = mb_strpos($str,$find, 0,"UTF-8");
if (
$index===false) {return;}
$str = mb_substr($str, 0,$i).$replace.mb_substr($str, $i+mb_strlen($find,"UTF-8"),mb_strlen($str,"UTF-8"));
$this->mb_str_replace($find,$replace,$str);
}
?>

note: moderate unit tesing was done, changed to other encodings
To Top