]> granicus.if.org Git - php/commitdiff
Made php_escape_html_entities() as a separate function for export.
authorAndrei Zmievski <andrei@php.net>
Tue, 29 Feb 2000 04:38:14 +0000 (04:38 +0000)
committerAndrei Zmievski <andrei@php.net>
Tue, 29 Feb 2000 04:38:14 +0000 (04:38 +0000)
ext/standard/html.c
ext/standard/html.h

index 83a0690432bd74707d5a535895b2a737735bdcee..41fef9c3641eee11bf0af4dd68043918685f6e74 100644 (file)
@@ -43,27 +43,18 @@ static char EntTable[][7] =
        "uuml","yacute","thorn","yuml"
 };
 
-static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all)
+PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all)
 {
-    pval **arg;
-    int i, len, maxlen;
-    unsigned char *old;
+       int i, maxlen, len;
        char *new;
 
-    if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {
-               WRONG_PARAM_COUNT;
-    }
-
-    convert_to_string_ex(arg);
-
-       maxlen = 2 * (*arg)->value.str.len;
+       maxlen = 2 * oldlen;
        if (maxlen < 128)
                maxlen = 128;
        new = emalloc (maxlen);
        len = 0;
 
-       old = (unsigned char *)(*arg)->value.str.val;
-       i = (*arg)->value.str.len;
+       i = oldlen;
        while (i--) {
                if (len + 9 > maxlen)
                        new = erealloc (new, maxlen += 128);
@@ -90,9 +81,25 @@ static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all)
                old++;
        }
     new [len] = '\0';
+       *newlen = len;
+
+       return new;
+}
+
+static void php_html_entities(INTERNAL_FUNCTION_PARAMETERS, int all)
+{
+    zval **arg;
+    int len;
+       char *new;
+
+    if (ARG_COUNT(ht) != 1 || zend_get_parameters_ex(1, &arg) == FAILURE) {
+               WRONG_PARAM_COUNT;
+    }
+
+    convert_to_string_ex(arg);
 
-    RETVAL_STRINGL(new,len,1);
-    efree(new);
+       new = php_escape_html_entities((*arg)->value.str.val, (*arg)->value.str.len, &len, all);
+    RETVAL_STRINGL(new,len,0);
 }
 
 #define HTML_SPECIALCHARS      0
index 265f0656b7894786f6ff7f49cf68f0a423e73ce8..082a0e9f0809e9b80e0116997f9e4e515e151283 100644 (file)
@@ -38,4 +38,6 @@ PHP_FUNCTION(htmlspecialchars);
 PHP_FUNCTION(htmlentities);
 PHP_FUNCTION(get_html_translation_table);
 
+PHPAPI char *php_escape_html_entities(unsigned char *old, int oldlen, int *newlen, int all);
+
 #endif /* _HTML_H */