summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristoph M. Becker <cmbecker69@gmx.de>2019-10-06 15:44:15 +0200
committerChristoph M. Becker <cmbecker69@gmx.de>2019-10-06 17:45:32 +0200
commit0a47096c08b23bb441a527f063a656d35facfc19 (patch)
treec1ebeaec896a360adbe6b03905002a4d4a952820
parentff00f4967340f859ee8da5f689994b20dcabbe05 (diff)
downloadphp-git-0a47096c08b23bb441a527f063a656d35facfc19.tar.gz
Add MBString arginfo stubs
-rw-r--r--ext/mbstring/mbstring.c331
-rw-r--r--ext/mbstring/mbstring.stub.php179
-rw-r--r--ext/mbstring/mbstring_arginfo.h297
3 files changed, 477 insertions, 330 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c
index 15dca0cf81..c0110c6154 100644
--- a/ext/mbstring/mbstring.c
+++ b/ext/mbstring/mbstring.c
@@ -75,6 +75,7 @@ onig_match(re, str, end, at, region, option)
#endif
#include "zend_multibyte.h"
+#include "mbstring_arginfo.h"
/* }}} */
#if HAVE_MBSTRING
@@ -181,336 +182,6 @@ static const php_mb_nls_ident_list php_mb_default_identify_list[] = {
/* }}} */
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_language, 0, 0, 0)
- ZEND_ARG_INFO(0, language)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_internal_encoding, 0, 0, 0)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_http_input, 0, 0, 0)
- ZEND_ARG_INFO(0, type)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_http_output, 0, 0, 0)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_order, 0, 0, 0)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substitute_character, 0, 0, 0)
- ZEND_ARG_INFO(0, substchar)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_preferred_mime_name, 0, 0, 1)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_parse_str, 0, 0, 2)
- ZEND_ARG_INFO(0, encoded_string)
- ZEND_ARG_INFO(1, result)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_output_handler, 0, 0, 2)
- ZEND_ARG_INFO(0, contents)
- ZEND_ARG_INFO(0, status)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_str_split, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, split_length)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strlen, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strpos, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, offset)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrpos, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, offset)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stripos, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, offset)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strripos, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, offset)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strstr, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, part)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrchr, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, part)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_stristr, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, part)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrichr, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, part)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr_count, 0, 0, 2)
- ZEND_ARG_INFO(0, haystack)
- ZEND_ARG_INFO(0, needle)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr, 0, 0, 2)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, start)
- ZEND_ARG_INFO(0, length)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strcut, 0, 0, 2)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, start)
- ZEND_ARG_INFO(0, length)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strwidth, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strimwidth, 0, 0, 3)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, start)
- ZEND_ARG_INFO(0, width)
- ZEND_ARG_INFO(0, trimmarker)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_encoding, 0, 0, 2)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, to)
- ZEND_ARG_INFO(0, from)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_case, 0, 0, 2)
- ZEND_ARG_INFO(0, sourcestring)
- ZEND_ARG_INFO(0, mode)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strtoupper, 0, 0, 1)
- ZEND_ARG_INFO(0, sourcestring)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strtolower, 0, 0, 1)
- ZEND_ARG_INFO(0, sourcestring)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_encoding, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, encoding_list)
- ZEND_ARG_INFO(0, strict)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_mb_list_encodings, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encoding_aliases, 0, 0, 1)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_mimeheader, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, charset)
- ZEND_ARG_INFO(0, transfer)
- ZEND_ARG_INFO(0, linefeed)
- ZEND_ARG_INFO(0, indent)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_mimeheader, 0, 0, 1)
- ZEND_ARG_INFO(0, string)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_kana, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, option)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_variables, 0, 0, 3)
- ZEND_ARG_INFO(0, to)
- ZEND_ARG_INFO(0, from)
- ZEND_ARG_VARIADIC_INFO(1, vars)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_numericentity, 0, 0, 2)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, convmap)
- ZEND_ARG_INFO(0, encoding)
- ZEND_ARG_INFO(0, is_hex)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_numericentity, 0, 0, 2)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, convmap)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_send_mail, 0, 0, 3)
- ZEND_ARG_INFO(0, to)
- ZEND_ARG_INFO(0, subject)
- ZEND_ARG_INFO(0, message)
- ZEND_ARG_INFO(0, additional_headers)
- ZEND_ARG_INFO(0, additional_parameters)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_get_info, 0, 0, 0)
- ZEND_ARG_INFO(0, type)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_check_encoding, 0, 0, 0)
- ZEND_ARG_INFO(0, var)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_scrub, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ord, 0, 0, 1)
- ZEND_ARG_INFO(0, str)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_chr, 0, 0, 1)
- ZEND_ARG_INFO(0, cp)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-#if HAVE_MBREGEX
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_regex_encoding, 0, 0, 0)
- ZEND_ARG_INFO(0, encoding)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg, 0, 0, 2)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(1, registers)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_eregi, 0, 0, 2)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(1, registers)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace, 0, 0, 3)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, replacement)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_eregi_replace, 0, 0, 3)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, replacement)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace_callback, 0, 0, 3)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, callback)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_split, 0, 0, 2)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, limit)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_match, 0, 0, 2)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search, 0, 0, 0)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_pos, 0, 0, 0)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_regs, 0, 0, 0)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_init, 0, 0, 1)
- ZEND_ARG_INFO(0, string)
- ZEND_ARG_INFO(0, pattern)
- ZEND_ARG_INFO(0, option)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_mb_ereg_search_getregs, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_mb_ereg_search_getpos, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_setpos, 0, 0, 1)
- ZEND_ARG_INFO(0, position)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_regex_set_options, 0, 0, 0)
- ZEND_ARG_INFO(0, options)
-ZEND_END_ARG_INFO()
-#endif /* HAVE_MBREGEX */
-/* }}} */
-
/* {{{ zend_function_entry mbstring_functions[] */
static const zend_function_entry mbstring_functions[] = {
PHP_FE(mb_convert_case, arginfo_mb_convert_case)
diff --git a/ext/mbstring/mbstring.stub.php b/ext/mbstring/mbstring.stub.php
new file mode 100644
index 0000000000..fafc4967af
--- /dev/null
+++ b/ext/mbstring/mbstring.stub.php
@@ -0,0 +1,179 @@
+<?php
+
+/** @return string|false */
+function mb_language(string $language = UNKNOWN) {}
+
+/** @return string|false */
+function mb_internal_encoding(string $encoding = UNKNOWN) {}
+
+/** @return array|string|false */
+function mb_http_input(string $type = UNKNOWN) {}
+
+/** @return string|false */
+function mb_http_output(string $encoding = UNKNOWN) {}
+
+/** @return array|bool */
+function mb_detect_order($encoding = UNKNOWN) {}
+
+/** @return string|int|bool */
+function mb_substitute_character($substchar = UNKNOWN) {}
+
+/** @return string|false */
+function mb_preferred_mime_name(string $encoding) {}
+
+function mb_parse_str(string $encoded_string, &$result): bool {}
+
+function mb_output_handler(string $contents, int $status): string {}
+
+/** @return array|false */
+function mb_str_split(string $str, int $split_length = 1, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_strlen(string $str, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_strpos(string $haystack, string $needle, int $offset = 0, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_strrpos(string $haystack, string $needle, $offset = UNBEK, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_stripos(string $haystack, string $needle, int $offset = 0, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_strripos(string $haystack, string $needle, int $offset = 0, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_strstr(string $haystack, string $needle, bool $part = false, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_strrchr(string $haystack, string $needle, bool $part = false, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_stristr(string $haystack, string $needle, bool $part = false, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_strrichr(string $haystack, string $needle, bool $part = false, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_substr_count(string $haystack, string $needle, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_substr(string $str, int $start, ?int $length = null, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_strcut(string $str, int $start, ?int $length = null, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_strwidth(string $str, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_strimwidth(string $str, int $start, int $width, string $trimmarker = UNKNOWN, string $encoding = UNKNOWN) {}
+
+/**
+ * @param array|string $str
+ * @return array|string|false
+ */
+function mb_convert_encoding($str, string $to, $from = UNKNOWN) {}
+
+/** @return string|false */
+function mb_convert_case(string $sourcestring, int $mode, ?string $encoding = null) {}
+
+/** @return string|false */
+function mb_strtoupper(string $sourcestring, ?string $encoding = null) {}
+
+/** @return string|false */
+function mb_strtolower(string $sourcestring, ?string $encoding = null) {}
+
+/**
+ * @param array|string $encoding_list
+ * @return string|false
+ */
+function mb_detect_encoding(string $str, $encoding_list = null, bool $strict = false) {}
+
+function mb_list_encodings(): array {}
+
+/** @return array|false */
+function mb_encoding_aliases(string $encoding) {}
+
+/** @return string|false */
+function mb_encode_mimeheader(string $str, string $charset = UNKNOWN, string $transfer = UNKNOWN, string $linefeed = UNKNOWN, int $indent = 0) {}
+
+/** @return string|false */
+function mb_decode_mimeheader(string $string) {}
+
+/** @return string|false */
+function mb_convert_kana(string $str, string $option = UNKNOWN, string $encoding = UNKNOWN) {}
+
+/**
+ * @param array|string $from
+ * @return string|false
+ */
+function mb_convert_variables(string $to, $from, &$var, &...$vars) {}
+
+/** @return string|false */
+function mb_encode_numericentity(string $string, $convmap, string $encoding = UNKNOWN, bool $is_hex = false) {}
+
+/** @return string|false */
+function mb_decode_numericentity(string $string, $convmap, string $encoding = UNKNOWN) {}
+
+function mb_send_mail(string $to, string $subject, string $message, $additional_headers = UNKNOWN, string $additional_parameters = UNKNOWN): bool {}
+
+/** @return array|string|int|false */
+function mb_get_info(string $type = UNKNOWN) {}
+
+function mb_check_encoding($var = UNBEK, string $encoding = UNKNOWN): bool {}
+
+/** @return string|false */
+function mb_scrub(string $str, string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_ord(string $str, string $encoding = UNKNOWN) {}
+
+/** @return string|false */
+function mb_chr(int $cp, string $encoding = UNKNOWN) {}
+
+#if HAVE_MBREGEX
+/** @return string|bool */
+function mb_regex_encoding(string $encoding = UNKNOWN) {}
+
+/** @return int|false */
+function mb_ereg(string $pattern, string $string, &$registers = UNKNOWN) {}
+
+/** @return int|false */
+function mb_eregi(string $pattern, string $string, &$registers = UNKNOWN) {}
+
+/** @return string|false|null */
+function mb_ereg_replace(string $pattern, string $replacement, string $string, string $option = UNKNOWN) {}
+
+/** @return string|false|null */
+function mb_eregi_replace(string $pattern, string $replacement, string $string, string $option = UNKNOWN) {}
+
+/** @return string|false|null */
+function mb_ereg_replace_callback(string $pattern, callable $callback, string $string, string $option = UNKNOWN) {}
+
+/** @return array|false */
+function mb_split(string $pattern, string $string, int $limit = -1) {}
+
+function mb_ereg_match(string $pattern, string $string, string $option = UNKNOWN): bool {}
+
+/** @return array|bool */
+function mb_ereg_search(string $pattern = UNKNOWN, string $option = UNKNOWN) {}
+
+/** @return array|bool */
+function mb_ereg_search_pos(string $pattern = UNKNOWN, string $option = UNKNOWN) {}
+
+/** @return array|bool */
+function mb_ereg_search_regs(string $pattern = UNKNOWN, string $option = UNKNOWN) {}
+
+function mb_ereg_search_init(string $string, string $pattern = UNKNOWN, string $option = UNKNOWN): bool {}
+
+/** @return array|false */
+function mb_ereg_search_getregs() {}
+
+function mb_ereg_search_getpos(): int {}
+
+function mb_ereg_search_setpos(int $position): bool {}
+
+function mb_regex_set_options(string $options = UNKNOWN): string {}
+#endif
diff --git a/ext/mbstring/mbstring_arginfo.h b/ext/mbstring/mbstring_arginfo.h
new file mode 100644
index 0000000000..d7f7b8f891
--- /dev/null
+++ b/ext/mbstring/mbstring_arginfo.h
@@ -0,0 +1,297 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_language, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, language, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_internal_encoding, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_http_input, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, type, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_http_output arginfo_mb_internal_encoding
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_order, 0, 0, 0)
+ ZEND_ARG_INFO(0, encoding)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substitute_character, 0, 0, 0)
+ ZEND_ARG_INFO(0, substchar)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_preferred_mime_name, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_parse_str, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, encoded_string, IS_STRING, 0)
+ ZEND_ARG_INFO(1, result)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_output_handler, 0, 2, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, contents, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, status, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_str_split, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, split_length, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strlen, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strpos, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, needle, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strrpos, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, needle, IS_STRING, 0)
+ ZEND_ARG_INFO(0, offset)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_stripos arginfo_mb_strpos
+
+#define arginfo_mb_strripos arginfo_mb_strpos
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strstr, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, needle, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, part, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_strrchr arginfo_mb_strstr
+
+#define arginfo_mb_stristr arginfo_mb_strstr
+
+#define arginfo_mb_strrichr arginfo_mb_strstr
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr_count, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, needle, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_substr, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, start, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 1)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_strcut arginfo_mb_substr
+
+#define arginfo_mb_strwidth arginfo_mb_strlen
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strimwidth, 0, 0, 3)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, start, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, width, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, trimmarker, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_encoding, 0, 0, 2)
+ ZEND_ARG_INFO(0, str)
+ ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0)
+ ZEND_ARG_INFO(0, from)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_case, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, sourcestring, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 1)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_strtoupper, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, sourcestring, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 1)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_strtolower arginfo_mb_strtoupper
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_detect_encoding, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_INFO(0, encoding_list)
+ ZEND_ARG_TYPE_INFO(0, strict, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_list_encodings, 0, 0, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_encoding_aliases arginfo_mb_preferred_mime_name
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_mimeheader, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, charset, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, transfer, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, linefeed, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, indent, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_mimeheader, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_kana, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_convert_variables, 0, 0, 3)
+ ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0)
+ ZEND_ARG_INFO(0, from)
+ ZEND_ARG_INFO(1, var)
+ ZEND_ARG_VARIADIC_INFO(1, vars)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_encode_numericentity, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_INFO(0, convmap)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, is_hex, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_decode_numericentity, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_INFO(0, convmap)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_send_mail, 0, 3, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, subject, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, message, IS_STRING, 0)
+ ZEND_ARG_INFO(0, additional_headers)
+ ZEND_ARG_TYPE_INFO(0, additional_parameters, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_get_info arginfo_mb_http_input
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_check_encoding, 0, 0, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, var)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_mb_scrub arginfo_mb_strlen
+
+#define arginfo_mb_ord arginfo_mb_strlen
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_chr, 0, 0, 1)
+ ZEND_ARG_TYPE_INFO(0, cp, IS_LONG, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_regex_encoding, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, encoding, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_INFO(1, registers)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+#define arginfo_mb_eregi arginfo_mb_ereg
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace, 0, 0, 3)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, replacement, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+#define arginfo_mb_eregi_replace arginfo_mb_ereg_replace
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_replace_callback, 0, 0, 3)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, callback, IS_CALLABLE, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_split, 0, 0, 2)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, limit, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_ereg_match, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+#define arginfo_mb_ereg_search_pos arginfo_mb_ereg_search
+#endif
+
+#if HAVE_MBREGEX
+#define arginfo_mb_ereg_search_regs arginfo_mb_ereg_search
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_ereg_search_init, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, pattern, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, option, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mb_ereg_search_getregs, 0, 0, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_ereg_search_getpos, 0, 0, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_ereg_search_setpos, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, position, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_MBREGEX
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mb_regex_set_options, 0, 0, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, options, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+#endif