CakeFest 2024: The Official CakePHP Conference

mb_eregi_replace

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

mb_eregi_replaceReemplaza una expresión regular con soporte multibyte ignorando mayúsculas/minúsculas

Descripción

mb_eregi_replace(
    string $pattern,
    string $replace,
    string $string,
    string $option = "msri"
): string

Explora string para ver si hay coincidencias con pattern, luego reemplaza el texto coincidente con replacement.

Parámetros

pattern

El patrón de la expresión regular. Se pueden usar caracteres multibyte. Se ignorará la distinción entre mayúsculas/minúsculas.

replace

El texto de sustitución.

string

El string buscado.

option
option tiene el mismo significado que en mb_ereg_replace().

Valores devueltos

El string resultante o false en caso de error.

Historial de cambios

Versión Descripción
7.1.0 El modificador e está ahora obsoleto.

Notas

Nota:

La codificación interna o la codificación especificada por mb_regex_encoding() será usada en esta función.

Advertencia

Nunca utilice el modificador e cuando trabaje con datos de entrada que no son de confianza. No se producirá ningún escape automático (como en preg_replace()). Si utiliza el modificador puede crear vulnerabilidades de ejecución remota de código en su aplicación.

Ver también

  • mb_regex_encoding() - Establecer/obtener la codificación de caracteres para expresiones regulares multibyte
  • mb_ereg_replace() - Reemplaza una expresión regular con soporte multibyte

add a note

User Contributed Notes 3 notes

up
9
kirilatpillaxdotcom
11 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
15 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
12 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