CakeFest 2024: The Official CakePHP Conference

mb_eregi_replace

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

mb_eregi_replaceЗаменяет по регулярному выражению с поддержкой многобайтовых символов без учёта регистра

Описание

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

Сканирует строку string для поиска совпадений с шаблоном pattern, затем заменяет совпавший текст на значение, переданное в параметр replacement.

Список параметров

pattern

Шаблон регулярного выражения. Можно указывать многобайтовые символы. Регистр будет проигнорирован.

replacement

Текст замены.

string

Строка (string) поиска.

options
Вариант поиска. Объяснение дано в описании функции mb_regex_set_options().

Возвращаемые значения

Возвращает результирующую строку (string) в случае успешного выполнения или false в случае возникновения ошибки. Если строка string недопустима для текущей кодировки, возвращает null.

Список изменений

Версия Описание
8.0.0 Параметр options теперь может принимать значение null.
7.1.0 Функция проверяет, является ли строка string допустимой для текущей кодировки.
7.1.0 Модификатор e объявлен устаревшим.

Примечания

Замечание:

Для этой функции будет использована внутренняя кодировка или кодировка, установленная функцией mb_regex_encoding().

Внимание

Никогда не используйте модификатор e при работе с данными, полученными из недостоверных источников. Не выполняется никакого автоматического экранирования этих данных (в отличие от preg_replace()). Игнорирование этих требований, скорее всего, создаст уязвимость выполнения удалённого кода в приложении.

Смотрите также

  • mb_regex_encoding() - Устанавливает/получает кодировку символов для многобайтового регулярного выражения
  • mb_ereg_replace() - Заменяет по регулярному выражению с поддержкой многобайтовых кодировок

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