mb_ereg_search
(PHP 4 >= 4.2.0, PHP 5)
mb_ereg_search — Multibyte regular expression match for predefined multibyte string
Description
$pattern
[, string $option
= "ms"
]] )Performs a multibyte regular expression match for a predefined multibyte string.
Parameters
-
pattern
-
The search pattern.
-
option
-
The search option.
Return Values
mb_ereg_search() returns TRUE
if the
multibyte string matches with the regular expression, or FALSE
otherwise. The string for matching is set by
mb_ereg_search_init(). If
pattern
is not specified, the previous one
is used.
Notes
Note:
The internal encoding or the character encoding specified by mb_regex_encoding() will be used as the character encoding for this function.
See Also
- mb_regex_encoding() - Set/Get character encoding for multibyte regex
- mb_ereg_search_init() - Setup string and regular expression for a multibyte regular expression match
- PHP Руководство
- Функции по категориям
- Индекс функций
- Справочник функций
- Поддержка языков и кодировок
- Многобайтные строки
- mb_check_encoding
- mb_convert_case
- mb_convert_encoding
- mb_convert_kana
- mb_convert_variables
- mb_decode_mimeheader
- mb_decode_numericentity
- mb_detect_encoding
- mb_detect_order
- mb_encode_mimeheader
- mb_encode_numericentity
- mb_encoding_aliases
- mb_ereg_match
- mb_ereg_replace_callback
- mb_ereg_replace
- mb_ereg_search_getpos
- mb_ereg_search_getregs
- mb_ereg_search_init
- mb_ereg_search_pos
- mb_ereg_search_regs
- mb_ereg_search_setpos
- mb_ereg_search
- mb_ereg
- mb_eregi_replace
- mb_eregi
- mb_get_info
- mb_http_input
- mb_http_output
- mb_internal_encoding
- mb_language
- mb_list_encodings
- mb_output_handler
- mb_parse_str
- mb_preferred_mime_name
- mb_regex_encoding
- mb_regex_set_options
- mb_send_mail
- mb_split
- mb_strcut
- mb_strimwidth
- mb_stripos
- mb_stristr
- mb_strlen
- mb_strpos
- mb_strrchr
- mb_strrichr
- mb_strripos
- mb_strrpos
- mb_strstr
- mb_strtolower
- mb_strtoupper
- mb_strwidth
- mb_substitute_character
- mb_substr_count
- mb_substr
Коментарии
mb_ereg_search & subpatterns
use loop:
<?php
$str = "中国abc + abc ?!?!字符# china string";
$reg = "\w+";
mb_regex_encoding("UTF-8");
mb_ereg_search_init($str, $reg);
$r = mb_ereg_search();
if(!$r)
{
echo "null\n";
}
else
{
$r = mb_ereg_search_getregs(); //get first result
do
{
var_dump($r[0]);
$r = mb_ereg_search_regs();//get next result
}
while($r);
}
?>
A 'match_all' helper function based on dulao's answer. Someone might find it useful...
<?php
function mb_ereg_match_all($pattern, $subject, &$matches, $options = '', $setOrder = false, $offset = 0) {
if (!mb_ereg_search_init($subject, $pattern, $options)) {
return false;
}
if ($offset != 0 && !mb_ereg_search_setpos($offset)) {
return false;
}
$matches = [];
if (!mb_ereg_search()) {
return 0;
}
$regs = mb_ereg_search_getregs();
$count = 0;
do {
$count++;
if ($setOrder) {
foreach ($regs as $key => $val) {
$matches[$key][] = $val;
}
} else {
$matches[] = $regs;
}
$regs = mb_ereg_search_regs();
}
while($regs);
return $count;
}
?>