/* Make a copy of the variable name, as php_register_variable_ex seems to
* modify it */
- orig_var = estrdup(var);
+ orig_var = var;
/* Store the RAW variable internally */
/* FIXME: Should not use php_register_variable_ex as that also registers
*/
PHP_FUNCTION(filter_data)
{
+ long filter = FS_DEFAULT;
+ char *charset = NULL;
+ int charset_len;
+ zval *var, *flags = NULL;
+ int filter_flags = 0;
+ zval *options = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/l|zs", &var, &filter, &flags, &charset, &charset_len) == FAILURE) {
+ return;
+ }
+
+ if (flags) {
+ switch (Z_TYPE_P(flags)) {
+ case IS_ARRAY:
+ options = flags;
+ break;
+
+ case IS_STRING:
+ case IS_BOOL:
+ case IS_LONG:
+ convert_to_long(flags);
+ filter_flags = Z_LVAL_P(flags);
+ options = NULL;
+ break;
+ }
+ }
+
+ php_zval_filter_recursive(var, filter, filter_flags, options, charset);
+ RETURN_ZVAL(var, 1, 0);
}
/* }}} */