mb_ereg() - mb函数(多字节字符串转化库)
mb_ereg()
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
Regular expression match with multibyte support
说明
mb_ereg(string $pattern,string $string[,array &$regs]): intExecutes the regular expression match with multibyte support.
参数
$patternThe search pattern.
$stringThe search string.
$regsIf matches are found for parenthesized substrings of$patternand the function is called with the third argument$regs, the matches will be stored in the elements of the array$regs. If no matches are found,$regsis set to an empty array.
$regs[1]will contain the substring which starts at the first left parenthesis;$regs[2]will contain the substring starting at the second, and so on.$regs[0]will contain a copy of the complete string matched.
返回值
Returns the byte length of the matched string if a match for$patternwas found in$string, or FALSE
if no matches were found or an error occurred.
If the optional parameter$regswas not passed or the length of the matched string is0, this function returns1.
更新日志
版本 | 说明 |
---|---|
7.1.0 | mb_ereg() will now set$regsto an empty array, if nothing matched. Formerly,$regswas not modified in that case. |
注释
Note:mb_regex_encoding()指定的内部编码或字符编码将会当作此函数用的字符编码。
参见
mb_regex_encoding()
Set/Get character encoding for multibyte regexmb_eregi()
Regular expression match ignoring case with multibyte support
Old link to Oniguruma regex syntax is not working anymore, there is a working one: https://github.com/geoffgarside/oniguruma/blob/master/Syntax.txt
Note that mb_ereg() does not support the \uFFFF unicode syntax but uses \x{FFFF} instead:
I hope this information is shown somewhere on php.net. According to "https://github.com/php/php-src/tree/PHP-5.6/ext/mbstring/oniguruma", the bundled Oniguruma regex library version seems ... 4.7.1 between PHP 5.3 - 5.4.45, 5.9.2 between PHP 5.5 - 7.1.16, 6.3.0 since PHP 7.2 - .
mb_ereg() seems unable to Use "named subpattern". preg_match() seems a substitute only in UTF-8 encoding. This code ignores "?" in $pattern and displays below. Array ( [0] => multi_byte_string [1] => string ) $pattern = '/.*(?string).*/u'; if(preg_match($pattern, $text, $matches)){ instead of lines 2 & 3 displays below (in UTF-8 encoding). Array ( [0] => multi_byte_string [name] => string [1] => string )
While hardly mentioned anywhere, it may be useful to note that mb_ereg uses Oniguruma library internally. The syntax for the default mode (ruby) is described here: http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt
Hebrew regex tested on PHP 5, Ubuntu 8.04. Seems to work fine without the mb_regex_encoding lines (commented out). Didn't seem to work with \uxxxx (also commented out).
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!