©
本文档使用
php.cn手册 发布
(PHP 4 >= 4.2.0, PHP 5)
mb_eregi_replace — Replace regular expression with multibyte support ignoring case
$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() 指定的内部编码或字符编码将会当作此函数用的字符编码。
处理非信任的输入时从不使用 e 修饰符,就不会转码(即调用 preg_replace() )。不注意这些会很可能会导致应用程序引发远程代码执行的漏洞。
[#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,$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
[#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;
}
?>