mb_ereg_match

(PHP 4 >= 4.2.0, PHP 5, PHP 7)

mb_ereg_matchRegular 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 string matches the regular expression pattern, FALSE if not.

注释

Note:

mb_regex_encoding() 指定的内部编码或字符编码将会当作此函数用的字符编码。

参见

User Contributed Notes

webdesign at innato dot nl 24-Mar-2019 06:47
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
?>
Anonymous 22-Feb-2016 10:01
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.
Anonymous 18-Oct-2008 06:52
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

?>