---
name: "Data::FormValidator::Filters"
section: "3pm"
platform: "linux"
package: "libdata-formvalidator-perl"
version: "4.88-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Data::FormValidator::Filters"
---

# Data::FormValidator::Filters(3pm)

Basic set of filters available in an Data::FormValidator profile.

## NAME

Data::FormValidator::Filters - Basic set of filters available in an Data::FormValidator profile.

## SYNOPSIS

```
    use Data::FormValidator;
    %profile = (
        filters => 'trim',
        ...
    );
    my $results = Data::FormValidator->check(  \%data, \%profile );
```

## DESCRIPTION

These are the builtin filters which may be specified as a name in the *filters*, *field\_filters*, and *field\_filter\_regexp\_map* parameters of the input profile.

Filters are applied as the first step of validation, possibly modifying a copy of the validation before any constraints are checked.

## RECOMMENDED USE

As a long time maintainer and user of Data::FormValidator, I recommend that filters be used with caution. They are immediately modifying the input provided, so the original data is lost. The few I recommend include `"trim"`, which removes leading and trailing whitespace. I have this turned on by default by using CGI::Application::Plugin::ValidateRM. It's also generally safe to use the `"lc"` and `"uc"` filters if you need that kind of data transformation.

Beyond simple filters, I recommend transforming the `"valid"` hash returned from validation if further changes are needed.

## PROCEDURAL INTERFACE

You may also call these functions directly through the procedural interface by either importing them directly or importing the whole *:filters* group. For example, if you want to access the *trim* function directly, you could either do:

```
    use Data::FormValidator::Filters (qw/filter_trim/);
    # or
    use Data::FormValidator::Filters (qw/:filters/);
    $string = filter_trim($string);
```

Notice that when you call filters directly, you'll need to prefix the filter name with "filter\_".

## THE FILTERS

### FV\_split

```
  use Data::FormValidator::Filters qw(FV_split);
  # Validate every e-mail in a comma separated list
  field_filters => {
     several_emails  => FV_split(qr/\s*,\s*/),
     # Any pattern that can be used by the 'split' builtin works.
     tab_sep_field   => FV_split('\t'),
  },
  constraint_methods => {
    several_emails => email(),
  },
```

With this filter, you can split a field into multiple values. The constraint for the field will then be applied to every value.

This filter has a different naming convention because it is a higher-order function.  Rather than returning a value directly, it returns a code reference to a standard Data::FormValidator filter.

After successfully being validated the values will appear as an arrayref.

### FV\_replace

```
  use Data::FormValidator::Filters qw(FV_replace);
  field_filters => {
     first_name   => FV_replace(qr/Mark/,'Don'),
  },
```

FV\_replace is a shorthand for writing simple find-and-replace filters. The above filter would be translated to this:

```
 sub { my $v = shift; $v =~ s/Mark/Don/; $v }
```

For more complex filters, just write your own.

### trim

Remove white space at the front and end of the fields.

### strip

Runs of white space are replaced by a single space.

### digit

Remove non digits characters from the input.

### alphanum

Remove non alphanumeric characters from the input.

### integer

Extract from its input a valid integer number.

### pos\_integer

Extract from its input a valid positive integer number.

Bugs: This filter won't extract "9" from "a9+", it will instead extract "9+"

### neg\_integer

Extract from its input a valid negative integer number.

Bugs: This filter will currently filter the case of "a9-" to become "9-", which it should leave it alone.

### decimal

Extract from its input a valid decimal number.

Bugs: Given "1,000.23", it will currently return "1.000.23"

### pos\_decimal

Extract from its input a valid positive decimal number.

Bugs: Given "1,000.23", it will currently return "1.000.23"

### neg\_decimal

Extract from its input a valid negative decimal number.

Bugs: Given "1,000.23", it will currently return "1.000.23"

### dollars

Extract from its input a valid number to express dollars like currency.

Bugs: This filter won't currently remove trailing numbers like "1.234".

### phone

Filters out characters which aren't valid for an phone number. (Only accept digits \[0-9\], space, comma, minus, parenthesis, period and pound \[#\].)

### sql\_wildcard

Transforms shell glob wildcard (\*) to the SQL like wildcard (%).

### quotemeta

Calls the quotemeta (quote non alphanumeric character) builtin on its input.

### lc

Calls the lc (convert to lowercase) builtin on its input.

### uc

Calls the uc (convert to uppercase) builtin on its input.

### ucfirst

Calls the ucfirst (Uppercase first letter) builtin on its input.

## SEE ALSO

- o

  ```
   L<Data::FormValidator>
  ```

- o

  ```
   L<Data::FormValidator::Constraints>
  ```

- o

  ```
   L<Data::FormValidator::Filters::Image> - shrink incoming image uploads
  ```

## AUTHOR

```
 Author:  Francis J. Lacoste <francis.lacoste@iNsu.COM>
 Maintainer: Mark Stosberg <mark@summersault.com>
```

## COPYRIGHT

Copyright (c) 1999,2000 iNsu Innovations Inc. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the terms as perl itself.
