mb_eregi_replace

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

mb_eregi_replaceReplace regular expression with multibyte support ignoring case

说明

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

Scans string for matches to pattern, then replaces the matched text with replacement.

参数

pattern

The regular expression pattern. Multibyte characters may be used. The case will be ignored.

replace

The replacement text.

string

The searched string.

option
option has the same meaning as in mb_ereg_replace().

返回值

The resultant string or FALSE on error.

更新日志

版本 说明
7.1.0 The e modifier has been deprecated.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

Warning

处理非信任的输入时从不使用 e 修饰符,就不会转码(即调用 preg_replace())。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。

参见

User Contributed Notes

kirilatpillaxdotcom 02-Aug-2012 06:52
To highlight words in multi-byte text:

<?php
$s
= 'Алабала';
$f = 'а';
echo
preg_replace('/('.$f.')/iu', '<b>$1</b>', $s);
?>
its2dark2c at yahoo dot com 21-Aug-2011 01:36
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
cat at feelthehouse dot ru 13-Sep-2008 06:27
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;
}
?>