• I have a form with a text field for entering phone numbers, and need to strip out any non-numeric characters before using a number in an email address for an SMS gateway:

    [email protected]

    That would send a text message to 123-123-1234, on TMobile. Most SMS gateways won’t allow any dashes, so I need to remove them.

    I tried to do this by adding a filter function to ‘wpcf7_validate_text’. That looks like it works in the browser (and it can validate the number just fine,) but in the mail logs I see that the email is still being sent with the dashes in the number. I would like to avoid relying on Javascript if possible, because if something goes wrong with the JS then the form would be effectively broken.

    I would be grateful for any help. Here’s the filter function I’m currently using:


    function is_phone( $result, $tag ) { // Validate phone numbers
    $type = $tag['type'];
    $name = $tag['name'];

    if( $name == 'phone' ) {
    $stripped = preg_replace( '/\D/', '', $_POST[$name] );
    $_POST[$name] = $stripped;
    if( strlen( $_POST[$name] ) != 10 ) {
    $result['valid'] = false;
    $result['reason'][$name] = $_POST[$name] /*'You must enter a 10 digit U.S. phone number.'*/;
    }
    }
    return $result;
    }
    add_filter( 'wpcf7_validate_text', 'is_phone', 10, 2 );
    add_filter( 'wpcf7_validate_text*', 'is_phone', 10, 2 );

  • The topic ‘[Plugin: Contact Form 7] Filter Form Values’ is closed to new replies.