文字

mb_eregi_replace

(PHP 4 >= 4.2.0, PHP 5)

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.

注释

Note:

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

Warning

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

参见

  • mb_regex_encoding() - Set/Get character encoding for multibyte regex
  • mb_ereg_replace() - Replace regular expression with multibyte support

用户评论:

[#1] kirilatpillaxdotcom [2012-08-02 09:52:20]

To highlight words in multi-byte text:

<?php
$s 
'?????????';
$f '??';
echo 
preg_replace('/('.$f.')/iu''<b>$1</b>'$s);
?>

[#2] its2dark2c at yahoo dot com [2011-08-20 16:36:32]

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,$find0,"UTF-8");
if (
$index===false) {return;}
$str mb_substr($str0,$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

[#3] cat at feelthehouse dot ru [2008-09-13 09:27:36]

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;
}
?>

上一篇: 下一篇: