• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mb_eregi_replace()

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

    Replace regular expression with multibyte support ignoring case

    说明

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

    Scans$stringfor 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
    The search option. See mb_regex_set_options() for explanation.

    返回值

    The resultant string or FALSE on error.

    更新日志

    版本说明
    7.1.0 Theemodifier has been deprecated.

    注释

    Note:

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

    Warning

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

    参见

    To highlight words in multi-byte text:
    <?php
    $s = 'Алабала';
    $f = 'а';
    echo preg_replace('/('.$f.')/iu', '<b>$1</b>', $s);
    ?>
    
    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;
    }
    ?>
    
    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

    上篇:mb_ereg()

    下篇:mb_eregi()