diff options
| author | theodorejb <theodorejb@outlook.com> | 2019-10-07 11:13:16 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-10-07 11:13:16 +0200 |
| commit | ef9736e06274c23808b8dfc19f97b49e1e0ad8b6 (patch) | |
| tree | 85c1490204cdca6fdc2b07b3c097bb7a2e379505 | |
| parent | fdc133063d30385866b0eb84e8592aad2f94834e (diff) | |
| download | php-git-ef9736e06274c23808b8dfc19f97b49e1e0ad8b6.tar.gz | |
Convert string function arginfo to PHP stubs
| -rwxr-xr-x | ext/standard/basic_functions.c | 354 | ||||
| -rwxr-xr-x | ext/standard/basic_functions.stub.php | 201 | ||||
| -rwxr-xr-x | ext/standard/basic_functions_arginfo.h | 289 | ||||
| -rw-r--r-- | ext/standard/string.c | 6 |
4 files changed, 493 insertions, 357 deletions
diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index 1afa27f266..9c4c22f03b 100755 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -1467,360 +1467,6 @@ ZEND_BEGIN_ARG_INFO(arginfo_stream_socket_shutdown, 0) ZEND_END_ARG_INFO() #endif /* }}} */ -/* {{{ string.c */ -ZEND_BEGIN_ARG_INFO(arginfo_bin2hex, 0) - ZEND_ARG_INFO(0, data) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_hex2bin, 0) - ZEND_ARG_INFO(0, data) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strspn, 0, 0, 2) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, mask) - ZEND_ARG_INFO(0, start) - ZEND_ARG_INFO(0, len) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strcspn, 0, 0, 2) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, mask) - ZEND_ARG_INFO(0, start) - ZEND_ARG_INFO(0, len) -ZEND_END_ARG_INFO() - -#if HAVE_NL_LANGINFO -ZEND_BEGIN_ARG_INFO(arginfo_nl_langinfo, 0) - ZEND_ARG_INFO(0, item) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_strcoll, IS_LONG, 0) - ZEND_ARG_INFO(0, str1) - ZEND_ARG_INFO(0, str2) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_trim, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, character_mask) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_rtrim, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, character_mask) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ltrim, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, character_mask) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_wordwrap, 0, 0, 1) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, width) - ZEND_ARG_INFO(0, break) - ZEND_ARG_INFO(0, cut) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_explode, 0, 0, 2) - ZEND_ARG_INFO(0, separator) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, limit) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_implode, 0) - ZEND_ARG_INFO(0, glue) - ZEND_ARG_INFO(0, pieces) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strtok, 0, 0, 1) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, token) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_strtoupper, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_strtolower, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_basename, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, path) - ZEND_ARG_INFO(0, suffix) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_dirname, 0, 0, 1) - ZEND_ARG_INFO(0, path) - ZEND_ARG_INFO(0, levels) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_pathinfo, 0, 0, 1) - ZEND_ARG_INFO(0, path) - ZEND_ARG_INFO(0, options) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_stristr, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, part) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strstr, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, part) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strpos, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, offset) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_stripos, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, offset) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strrpos, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, offset) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strripos, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, offset) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_strrchr, 0) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_chunk_split, 0, 0, 1) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, chunklen) - ZEND_ARG_INFO(0, ending) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_substr, 0, 0, 2) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, start) - ZEND_ARG_INFO(0, length) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_replace, 0, 0, 3) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, replace) - ZEND_ARG_INFO(0, start) - ZEND_ARG_INFO(0, length) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_quotemeta, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_ord, IS_LONG, 0) - ZEND_ARG_INFO(0, character) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_chr, IS_STRING, 0) - ZEND_ARG_INFO(0, codepoint) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_ucfirst, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_lcfirst, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ucwords, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, delimiters) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strtr, 0, 0, 2) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, from) - ZEND_ARG_INFO(0, to) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_strrev, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_similar_text, 0, 2, IS_LONG, 0) - ZEND_ARG_INFO(0, str1) - ZEND_ARG_INFO(0, str2) - ZEND_ARG_INFO(1, percent) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_addcslashes, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, charlist) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_addslashes, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_stripcslashes, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_stripslashes, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_replace, 0, 0, 3) - ZEND_ARG_INFO(0, search) - ZEND_ARG_INFO(0, replace) - ZEND_ARG_INFO(0, subject) - ZEND_ARG_INFO(1, replace_count) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_ireplace, 0, 0, 3) - ZEND_ARG_INFO(0, search) - ZEND_ARG_INFO(0, replace) - ZEND_ARG_INFO(0, subject) - ZEND_ARG_INFO(1, replace_count) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hebrev, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, max_chars_per_line) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hebrevc, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, max_chars_per_line) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_nl2br, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, is_xhtml) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strip_tags, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, allowable_tags) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_setlocale, 0, 0, 2) - ZEND_ARG_INFO(0, category) - ZEND_ARG_VARIADIC_INFO(0, locales) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_parse_str, 0, 2, IS_VOID, 0) - ZEND_ARG_INFO(0, encoded_string) - ZEND_ARG_INFO(1, result) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_getcsv, 0, 0, 1) - ZEND_ARG_INFO(0, string) - ZEND_ARG_INFO(0, delimiter) - ZEND_ARG_INFO(0, enclosure) - ZEND_ARG_INFO(0, escape) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_str_repeat, 0) - ZEND_ARG_INFO(0, input) - ZEND_ARG_INFO(0, mult) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_count_chars, 0, 0, 1) - ZEND_ARG_INFO(0, input) - ZEND_ARG_INFO(0, mode) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_strnatcmp, IS_LONG, 0) - ZEND_ARG_INFO(0, s1) - ZEND_ARG_INFO(0, s2) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO(arginfo_localeconv, 0) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_strnatcasecmp, IS_LONG, 0) - ZEND_ARG_INFO(0, s1) - ZEND_ARG_INFO(0, s2) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_count, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, needle) - ZEND_ARG_INFO(0, offset) - ZEND_ARG_INFO(0, length) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_pad, 0, 0, 2) - ZEND_ARG_INFO(0, input) - ZEND_ARG_INFO(0, pad_length) - ZEND_ARG_INFO(0, pad_string) - ZEND_ARG_INFO(0, pad_type) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_sscanf, 0, 0, 2) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, format) - ZEND_ARG_VARIADIC_INFO(1, vars) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_str_rot13, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO(arginfo_str_shuffle, IS_STRING, 0) - ZEND_ARG_INFO(0, str) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_word_count, 0, 0, 1) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, charlist) -ZEND_END_ARG_INFO() - -#ifdef HAVE_STRFMON -ZEND_BEGIN_ARG_INFO(arginfo_money_format, 0) - ZEND_ARG_INFO(0, format) - ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() -#endif - -ZEND_BEGIN_ARG_INFO_EX(arginfo_str_split, 0, 0, 1) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, split_length) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_strpbrk, 0, 0, 2) - ZEND_ARG_INFO(0, haystack) - ZEND_ARG_INFO(0, char_list) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_compare, 0, 0, 3) - ZEND_ARG_INFO(0, main_str) - ZEND_ARG_INFO(0, str) - ZEND_ARG_INFO(0, offset) - ZEND_ARG_INFO(0, length) - ZEND_ARG_INFO(0, case_sensitivity) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_utf8_encode, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, data) -ZEND_END_ARG_INFO() - -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_utf8_decode, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, data) -ZEND_END_ARG_INFO() -/* }}} */ /* {{{ type.c */ ZEND_BEGIN_ARG_INFO(arginfo_gettype, 0) ZEND_ARG_INFO(0, var) diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index ce5020a253..1a1681ae0a 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -395,3 +395,204 @@ function assert($assertion, $description = null): bool {} /** @return int|string|bool|null */ function assert_options(int $what, $value = UNKNOWN) {} + +/* string.c */ + +function bin2hex(string $data): string {} + +/** @return string|false */ +function hex2bin(string $data) {} + +/** @return int|false */ +function strspn(string $str, string $mask, int $start = 0, int $len = UNKNOWN) {} + +/** @return int|false */ +function strcspn(string $str, string $mask, int $start = 0, int $len = UNKNOWN) {} + +#if HAVE_NL_LANGINFO +/** @return string|false */ +function nl_langinfo(int $item) {} +#endif + +function strcoll(string $str1, string $str2): int {} + +function trim(string $str, string $character_mask = " \n\r\t\v\0"): string {} + +function rtrim(string $str, string $character_mask = " \n\r\t\v\0"): string {} + +function ltrim(string $str, string $character_mask = " \n\r\t\v\0"): string {} + +function wordwrap(string $str, int $width = 75, string $break = "\n", bool $cut = false): string {} + +function explode(string $separator, string $str, int $limit = PHP_INT_MAX): array {} + +/** + * @param string $glue Optional - defaults to empty string + * @param array $pieces + */ +function implode($glue, $pieces = UNKNOWN): string {} + +/** + * @param string $str Optional - defaults to previous string + * @param string $token + * @return string|false + */ +function strtok(string $str, string $token = UNKNOWN) {} + +function strtoupper(string $str): string {} + +function strtolower(string $str): string {} + +function basename(string $path, string $suffix = ""): string {} + +function dirname(string $path, int $levels = 1): string {} + +/** @return array|string */ +function pathinfo(string $path, int $options = UNKNOWN) {} + +/** @return string|false */ +function stristr(string $haystack, string $needle, bool $before_needle = false) {} + +/** @return string|false */ +function strstr(string $haystack, string $needle, bool $before_needle = false) {} + +/** @return int|false */ +function strpos(string $haystack, string $needle, int $offset = 0) {} + +/** @return int|false */ +function stripos(string $haystack, string $needle, int $offset = 0) {} + +/** @return int|false */ +function strrpos(string $haystack, string $needle, int $offset = 0) {} + +/** @return int|false */ +function strripos(string $haystack, string $needle, int $offset = 0) {} + +/** @return string|false */ +function strrchr(string $haystack, string $needle) {} + +function chunk_split(string $str, int $chunklen = 76, string $ending = "\r\n"): string {} + +/** @return string|false */ +function substr(string $str, int $start, int $length = UNKNOWN) {} + +/** + * @param mixed $str + * @param mixed $replace + * @param mixed $start + * @param mixed $length + * @return string|array|false + */ +function substr_replace($str, $replace, $start, $length = UNKNOWN) {} + +function quotemeta(string $str): string {} + +function ord(string $character): int {} + +function chr(int $codepoint): string {} + +function ucfirst(string $str): string {} + +function lcfirst(string $str): string {} + +function ucwords(string $str, string $delimiters = " \t\r\n\f\v"): string {} + +/** + * @param string|array $from + * @return string|false + */ +function strtr(string $str, $from, string $to = UNKNOWN) {} + +function strrev(string $str): string {} + +/** @param float $percent */ +function similar_text(string $str1, string $str2, &$percent = null): int {} + +function addcslashes(string $str, string $charlist): string {} + +function addslashes(string $str): string {} + +function stripcslashes(string $str): string {} + +function stripslashes(string $str): string {} + +/** + * @param string|array $search + * @param string|array $replace + * @param string|array $subject + * @param int $replace_count + * @return string|array + */ +function str_replace($search, $replace, $subject, &$replace_count = UNKNOWN) {} + +/** + * @param string|array $search + * @param string|array $replace + * @param string|array $subject + * @param int $replace_count + * @return string|array + */ +function str_ireplace($search, $replace, $subject, &$replace_count = UNKNOWN) {} + +function hebrev(string $str, int $max_chars_per_line = 0): string {} + +function hebrevc(string $str, int $max_chars_per_line = 0): string {} + +function nl2br(string $str, bool $is_xhtml = true): string {} + +/** @param mixed $allowable_tags */ +function strip_tags(string $str, $allowable_tags = UNKNOWN): string {} + +/** + * @param string|array $locales + * @return string|false + */ +function setlocale(int $category, $locales, ...$rest) {} + +/** @param array $result */ +function parse_str(string $encoded_string, &$result): void {} + +function str_getcsv(string $string, string $delimiter = ',', string $enclosure = '"', string $escape = '\\'): array {} + +function str_repeat(string $input, int $mult): string {} + +/** @return array|string */ +function count_chars(string $input, int $mode = 0) {} + +function strnatcmp(string $s1, string $s2): int {} + +function localeconv(): array {} + +function strnatcasecmp(string $s1, string $s2): int {} + +/** @return int|false */ +function substr_count(string $haystack, string $needle, int $offset = 0, int $length = UNKNOWN) {} + +function str_pad(string $input, int $pad_length, string $pad_string = " ", int $pad_type = STR_PAD_RIGHT): string {} + +/** @return array|int|null */ +function sscanf(string $str, string $format, &...$vars) {} + +function str_rot13(string $str): string {} + +function str_shuffle(string $str): string {} + +/** @return array|int */ +function str_word_count(string $str, int $format = 0, string $charlist = UNKNOWN) {} + +#ifdef HAVE_STRFMON +/** @return string|false */ +function money_format(string $format, float $value) {} +#endif + +function str_split(string $str, int $split_length = 1): array {} + +/** @return string|false */ +function strpbrk(string $haystack, string $char_list) {} + +/** @return int|false */ +function substr_compare(string $main_str, string $str, int $offset, int $length = UNKNOWN, bool $case_insensitivity = false) {} + +function utf8_encode(string $data): string {} + +function utf8_decode(string $data): string {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index 83a77ba9d1..434c4a160d 100755 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -516,3 +516,292 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_assert_options, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, what, IS_LONG, 0) ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_bin2hex, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_hex2bin, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_strspn, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, mask, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, start, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, len, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_strcspn arginfo_strspn + +#if HAVE_NL_LANGINFO +ZEND_BEGIN_ARG_INFO_EX(arginfo_nl_langinfo, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, item, IS_LONG, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strcoll, 0, 2, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_trim, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, character_mask, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_rtrim arginfo_trim + +#define arginfo_ltrim arginfo_trim + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_wordwrap, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, width, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, break, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, cut, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_explode, 0, 2, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, separator, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, limit, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_implode, 0, 1, IS_STRING, 0) + ZEND_ARG_INFO(0, glue) + ZEND_ARG_INFO(0, pieces) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_strtok, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, token, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_strtoupper arginfo_base64_encode + +#define arginfo_strtolower arginfo_base64_encode + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_basename, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, suffix, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_dirname, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, levels, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_pathinfo, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, path, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, options, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_stristr, 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, before_needle, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#define arginfo_strstr arginfo_stristr + +ZEND_BEGIN_ARG_INFO_EX(arginfo_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_END_ARG_INFO() + +#define arginfo_stripos arginfo_strpos + +#define arginfo_strrpos arginfo_strpos + +#define arginfo_strripos arginfo_strpos + +ZEND_BEGIN_ARG_INFO_EX(arginfo_strrchr, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, needle, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chunk_split, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, chunklen, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, ending, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_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, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_replace, 0, 0, 3) + ZEND_ARG_INFO(0, str) + ZEND_ARG_INFO(0, replace) + ZEND_ARG_INFO(0, start) + ZEND_ARG_INFO(0, length) +ZEND_END_ARG_INFO() + +#define arginfo_quotemeta arginfo_base64_encode + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ord, 0, 1, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, character, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_chr, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, codepoint, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_ucfirst arginfo_base64_encode + +#define arginfo_lcfirst arginfo_base64_encode + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_ucwords, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, delimiters, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_strtr, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_INFO(0, from) + ZEND_ARG_TYPE_INFO(0, to, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_strrev arginfo_base64_encode + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_similar_text, 0, 2, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, str1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str2, IS_STRING, 0) + ZEND_ARG_INFO(1, percent) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_addcslashes, 0, 2, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, charlist, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_addslashes arginfo_base64_encode + +#define arginfo_stripcslashes arginfo_base64_encode + +#define arginfo_stripslashes arginfo_base64_encode + +ZEND_BEGIN_ARG_INFO_EX(arginfo_str_replace, 0, 0, 3) + ZEND_ARG_INFO(0, search) + ZEND_ARG_INFO(0, replace) + ZEND_ARG_INFO(0, subject) + ZEND_ARG_INFO(1, replace_count) +ZEND_END_ARG_INFO() + +#define arginfo_str_ireplace arginfo_str_replace + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hebrev, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, max_chars_per_line, IS_LONG, 0) +ZEND_END_ARG_INFO() + +#define arginfo_hebrevc arginfo_hebrev + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_nl2br, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, is_xhtml, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strip_tags, 0, 1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_INFO(0, allowable_tags) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_setlocale, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, category, IS_LONG, 0) + ZEND_ARG_INFO(0, locales) + ZEND_ARG_VARIADIC_INFO(0, rest) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_parse_str, 0, 2, IS_VOID, 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_str_getcsv, 0, 1, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, string, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, delimiter, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, enclosure, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, escape, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_str_repeat, 0, 2, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, input, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, mult, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_count_chars, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, input, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strnatcmp, 0, 2, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, s1, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, s2, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_localeconv arginfo_ob_list_handlers + +#define arginfo_strnatcasecmp arginfo_strnatcmp + +ZEND_BEGIN_ARG_INFO_EX(arginfo_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, offset, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_str_pad, 0, 2, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, input, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, pad_length, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, pad_string, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, pad_type, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_sscanf, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) + ZEND_ARG_VARIADIC_INFO(1, vars) +ZEND_END_ARG_INFO() + +#define arginfo_str_rot13 arginfo_base64_encode + +#define arginfo_str_shuffle arginfo_base64_encode + +ZEND_BEGIN_ARG_INFO_EX(arginfo_str_word_count, 0, 0, 1) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, format, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, charlist, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#if defined(HAVE_STRFMON) +ZEND_BEGIN_ARG_INFO_EX(arginfo_money_format, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, format, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, value, IS_DOUBLE, 0) +ZEND_END_ARG_INFO() +#endif + +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_str_split, 0, 1, IS_ARRAY, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, split_length, IS_LONG, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_strpbrk, 0, 0, 2) + ZEND_ARG_TYPE_INFO(0, haystack, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, char_list, IS_STRING, 0) +ZEND_END_ARG_INFO() + +ZEND_BEGIN_ARG_INFO_EX(arginfo_substr_compare, 0, 0, 3) + ZEND_ARG_TYPE_INFO(0, main_str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, str, IS_STRING, 0) + ZEND_ARG_TYPE_INFO(0, offset, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, length, IS_LONG, 0) + ZEND_ARG_TYPE_INFO(0, case_insensitivity, _IS_BOOL, 0) +ZEND_END_ARG_INFO() + +#define arginfo_utf8_encode arginfo_bin2hex + +#define arginfo_utf8_decode arginfo_bin2hex diff --git a/ext/standard/string.c b/ext/standard/string.c index 81f1cebb52..948a1ffce1 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3250,7 +3250,7 @@ PHPAPI zend_string *php_str_to_str(const char *haystack, size_t length, const ch } /* }}} */ -/* {{{ proto string strtr(string str, string from[, string to]) +/* {{{ proto string|false strtr(string str, string from[, string to]) Translates characters in str using given translation tables */ PHP_FUNCTION(strtr) { @@ -4711,7 +4711,7 @@ PHP_FUNCTION(strip_tags) } /* }}} */ -/* {{{ proto string|false setlocale(mixed category, string locale [, string ...]) +/* {{{ proto string|false setlocale(int category, string locale [, string ...]) Set locale information */ PHP_FUNCTION(setlocale) { @@ -5694,7 +5694,7 @@ PHP_FUNCTION(str_pad) } /* }}} */ -/* {{{ proto mixed sscanf(string str, string format [, string ...]) +/* {{{ proto array|int|null sscanf(string str, string format [, string ...]) Implements an ANSI C compatible sscanf */ PHP_FUNCTION(sscanf) { |
