• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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()指定的内部编码或字符编码将会当作此函数用的字符编码。

    参见

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