1 /* 2 +----------------------------------------------------------------------+ 3 | Copyright (c) The PHP Group | 4 +----------------------------------------------------------------------+ 5 | This source file is subject to version 3.01 of the PHP license, | 6 | that is bundled with this package in the file LICENSE, and is | 7 | available through the world-wide-web at the following url: | 8 | https://www.php.net/license/3_01.txt | 9 | If you did not receive a copy of the PHP license and are unable to | 10 | obtain it through the world-wide-web, please send a note to | 11 | license@php.net so we can mail you a copy immediately. | 12 +----------------------------------------------------------------------+ 13 | Authors: Rasmus Lerdorf <rasmus@php.net> | 14 | Stig Sæther Bakken <ssb@php.net> | 15 +----------------------------------------------------------------------+ 16 */ 17 18 #ifndef PHP_STRING_H 19 #define PHP_STRING_H 20 21 # include "ext/random/php_random.h" 22 23 #ifdef ZTS 24 PHP_MINIT_FUNCTION(localeconv); 25 PHP_MSHUTDOWN_FUNCTION(localeconv); 26 #endif 27 #ifdef HAVE_NL_LANGINFO 28 PHP_MINIT_FUNCTION(nl_langinfo); 29 #endif 30 #ifdef ZEND_INTRIN_SSE4_2_FUNC_PTR 31 PHP_MINIT_FUNCTION(string_intrin); 32 #endif 33 34 #define strnatcmp(a, b) \ 35 strnatcmp_ex(a, strlen(a), b, strlen(b), 0) 36 #define strnatcasecmp(a, b) \ 37 strnatcmp_ex(a, strlen(a), b, strlen(b), 1) 38 PHPAPI int strnatcmp_ex(char const *a, size_t a_len, char const *b, size_t b_len, bool is_case_insensitive); 39 PHPAPI struct lconv *localeconv_r(struct lconv *out); 40 PHPAPI char *php_strtoupper(char *s, size_t len); 41 PHPAPI char *php_strtolower(char *s, size_t len); 42 PHPAPI zend_string *php_string_toupper(zend_string *s); 43 PHPAPI zend_string *php_string_tolower(zend_string *s); 44 PHPAPI char *php_strtr(char *str, size_t len, const char *str_from, const char *str_to, size_t trlen); 45 PHPAPI zend_string *php_addslashes(zend_string *str); 46 PHPAPI void php_stripslashes(zend_string *str); 47 PHPAPI zend_string *php_addcslashes_str(const char *str, size_t len, const char *what, size_t what_len); 48 PHPAPI zend_string *php_addcslashes(zend_string *str, const char *what, size_t what_len); 49 PHPAPI void php_stripcslashes(zend_string *str); 50 PHPAPI zend_string *php_basename(const char *s, size_t len, const char *suffix, size_t sufflen); 51 PHPAPI size_t php_dirname(char *str, size_t len); 52 PHPAPI char *php_stristr(char *s, char *t, size_t s_len, size_t t_len); 53 PHPAPI zend_string *php_str_to_str(const char *haystack, size_t length, const char *needle, 54 size_t needle_len, const char *str, size_t str_len); 55 PHPAPI zend_string *php_trim(zend_string *str, const char *what, size_t what_len, int mode); 56 PHPAPI size_t php_strip_tags(char *rbuf, size_t len, const char *allow, size_t allow_len); 57 PHPAPI size_t php_strip_tags_ex(char *rbuf, size_t len, const char *allow, size_t allow_len, bool allow_tag_spaces); 58 PHPAPI void php_implode(const zend_string *delim, HashTable *arr, zval *return_value); 59 PHPAPI void php_explode(const zend_string *delim, zend_string *str, zval *return_value, zend_long limit); 60 61 PHPAPI size_t php_strspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end); 62 PHPAPI size_t php_strcspn(const char *s1, const char *s2, const char *s1_end, const char *s2_end); 63 64 PHPAPI int string_natural_compare_function_ex(zval *result, zval *op1, zval *op2, bool case_insensitive); 65 PHPAPI int string_natural_compare_function(zval *result, zval *op1, zval *op2); 66 PHPAPI int string_natural_case_compare_function(zval *result, zval *op1, zval *op2); 67 68 PHPAPI bool php_binary_string_shuffle(const php_random_algo *algo, php_random_status *status, char *str, zend_long len); 69 70 #ifdef _REENTRANT 71 # ifdef PHP_WIN32 72 # include <wchar.h> 73 # endif 74 # define php_mblen(ptr, len) ((int) mbrlen(ptr, len, &BG(mblen_state))) 75 # define php_mb_reset() memset(&BG(mblen_state), 0, sizeof(BG(mblen_state))) 76 #else 77 # define php_mblen(ptr, len) mblen(ptr, len) 78 # define php_mb_reset() php_ignore_value(mblen(NULL, 0)) 79 #endif 80 81 #define PHP_STR_PAD_LEFT 0 82 #define PHP_STR_PAD_RIGHT 1 83 #define PHP_STR_PAD_BOTH 2 84 #define PHP_PATHINFO_DIRNAME 1 85 #define PHP_PATHINFO_BASENAME 2 86 #define PHP_PATHINFO_EXTENSION 4 87 #define PHP_PATHINFO_FILENAME 8 88 #define PHP_PATHINFO_ALL (PHP_PATHINFO_DIRNAME | PHP_PATHINFO_BASENAME | PHP_PATHINFO_EXTENSION | PHP_PATHINFO_FILENAME) 89 90 #define PHP_STR_STRSPN 0 91 #define PHP_STR_STRCSPN 1 92 93 #endif /* PHP_STRING_H */ 94