summaryrefslogtreecommitdiff
path: root/ext/standard
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2006-12-18 15:02:16 +0000
committerIlia Alshanetsky <iliaa@php.net>2006-12-18 15:02:16 +0000
commit090e14dfda98ee0c77cfed62b741bf3eb65b45bf (patch)
treeb2eea077dd8e6a0c9c35dd8b7520686ebc8bb6aa /ext/standard
parenta938d8e3862fc0bcf38a73cedb0b8b3716b01936 (diff)
downloadphp-git-090e14dfda98ee0c77cfed62b741bf3eb65b45bf.tar.gz
Less hackish support for spaces at the start of tags within strip_tags()
Diffstat (limited to 'ext/standard')
-rw-r--r--ext/standard/php_string.h1
-rw-r--r--ext/standard/string.c11
2 files changed, 9 insertions, 3 deletions
diff --git a/ext/standard/php_string.h b/ext/standard/php_string.h
index f11fc71095..a804b323fd 100644
--- a/ext/standard/php_string.h
+++ b/ext/standard/php_string.h
@@ -132,6 +132,7 @@ PHPAPI char *php_str_to_str(char *haystack, int length, char *needle,
int needle_len, char *str, int str_len, int *_new_length);
PHPAPI char *php_trim(char *c, int len, char *what, int what_len, zval *return_value, int mode TSRMLS_DC);
PHPAPI size_t php_strip_tags(char *rbuf, int len, int *state, char *allow, int allow_len);
+PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, int allow_len, zend_bool allow_tag_spaces);
PHPAPI int php_char_to_str_ex(char *str, uint len, char from, char *to, int to_len, zval *result, int case_sensitivity, int *replace_count);
PHPAPI int php_char_to_str(char *str, uint len, char from, char *to, int to_len, zval *result);
PHPAPI void php_implode(zval *delim, zval *arr, zval *return_value TSRMLS_DC);
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 6f5dc819aa..4814de6cf0 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -3890,7 +3890,7 @@ PHP_FUNCTION(strip_tags)
}
convert_to_string_ex(str);
buf = estrndup(Z_STRVAL_PP(str), Z_STRLEN_PP(str));
- retval_len = php_strip_tags(buf, Z_STRLEN_PP(str), NULL, allowed_tags, allowed_tags_len);
+ retval_len = php_strip_tags_ex(buf, Z_STRLEN_PP(str), NULL, allowed_tags, allowed_tags_len, 0);
RETURN_STRINGL(buf, retval_len, 0);
}
/* }}} */
@@ -4095,6 +4095,11 @@ int php_tag_find(char *tag, int len, char *set) {
}
/* }}} */
+PHPAPI size_t php_strip_tags(char *rbuf, int len, int *stateptr, char *allow, int allow_len)
+{
+ return php_strip_tags_ex(rbuf, len, stateptr, allow, allow_len, 0);
+}
+
/* {{{ php_strip_tags
A simple little state-machine to strip out html and php tags
@@ -4115,7 +4120,7 @@ int php_tag_find(char *tag, int len, char *set) {
swm: Added ability to strip <?xml tags without assuming it PHP
code.
*/
-PHPAPI size_t php_strip_tags(char *rbuf, int len, int *stateptr, char *allow, int allow_len)
+PHPAPI size_t php_strip_tags_ex(char *rbuf, int len, int *stateptr, char *allow, int allow_len, zend_bool allow_tag_spaces)
{
char *tbuf, *buf, *p, *tp, *rp, c, lc;
int br, i=0, depth=0;
@@ -4143,7 +4148,7 @@ PHPAPI size_t php_strip_tags(char *rbuf, int len, int *stateptr, char *allow, in
case '\0':
break;
case '<':
- if (isspace(*(p + 1)) && allow_len >=- 0) {
+ if (isspace(*(p + 1)) && !allow_tag_spaces) {
goto reg_char;
}
if (state == 0) {