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