mb_ereg_match()
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
Regular expression match for multibyte string
说明
mb_ereg_match(string $pattern,string $string[,string $option= "msr"]): bool
A regular expression match for a multibyte string
参数
- $pattern
The regular expression pattern.
- $string
The string being evaluated.
- $option
The search option. See mb_regex_set_options() for explanation.
返回值
Returns TRUE
if$stringmatches the regular expression$pattern,FALSE
if not.
注释
Note:mb_regex_encoding()指定的内部编码或字符编码将会当作此函数用的字符编码。
参见
mb_regex_encoding()
Set/Get character encoding for multibyte regexmb_ereg()
Regular expression match with multibyte support
The behaviour of mb_ereg_match to imply a ^ at the beginning of the pattern stands in stark contrast to the behaviour of mb_ereg where ^ is NOT implied. Switching between those two routines (because the need to extract a subpattern changes) requires careful consideration when to compensate for this surprising inconsistence.
Note that this function matches a string from the beginning only (though not necessarily till the end): <?php $test = mb_ereg_match("a", "some apples"); // returns false $test = mb_ereg_match("a", "a kiwi"); // returns true ?> If you want to check for a match anywhere in the string, use the wild-card & repeat operators .* <?php $test = mb_ereg_match(".*a", "some apples"); // returns true ?>
It took me a while to discover that you must escape characters like parentheses (), square brackets [] and ^ (and maybe more) if you want to match these as a literal. Otherwise you may get some erratic outcome. In summary, using a match anywhere in the string as an example: <?php $needle = "["; $haystack = "some_array[]"; $test= mb_ereg_match(".*".$needle, $haystack); // returns false and a php warning $test= mb_ereg_match('.*'.preg_quote($needle), $haystack); // returns true ?>