bp_xprofile_validate_phone_value( $retval, $field_id, $value, null $user_id = null )
Validate phone number format.
Description
Parameters
- $retval
-
(Required)
- $field_id
-
(Required)
- $value
-
(Required)
- $user_id
-
(Optional)
Default value: null
Return
(string)
Source
File: bp-xprofile/bp-xprofile-filters.php
function bp_xprofile_validate_phone_value( $retval, $field_id, $value, $user_id = null ) {
if ( 'telephone' !== xprofile_get_field( $field_id)->type ) {
return $retval;
}
if ( $retval ) {
return $retval;
}
if ( false === xprofile_check_is_required_field( $field_id ) && '' === $value ) {
return $retval;
}
$international = false;
$selected_format = bp_xprofile_get_meta( $field_id, 'field', 'phone_format', true );
if ( empty( $selected_format ) ) {
$international = true;
}
$str = trim( $value );
$str = preg_replace( '/\s+(#|x|ext(ension)?)\.?:?\s*(\d+)/', ' ext \3', $str );
$us_number = preg_match( '/^(\+\s*)?((0{0,2}1{1,3}[^\d]+)?\(?\s*([2-9][0-9]{2})\s*[^\d]?\s*([2-9][0-9]{2})\s*[^\d]?\s*([\d]{4})){1}(\s*([[:alpha:]#][^\d]*\d.*))?$/', $str, $matches );
$field_name = xprofile_get_field( $field_id )->name;
if ( empty( $str) ) {
/* SET ERROR: The field must be a valid U.S. phone number (e.g. 888-888-8888) */
return sprintf( __( '%s is required and not allowed to be empty.', 'buddyboss' ), $field_name );
}
if ( $us_number ) {
return $retval;
}
if ( ! $international ) {
/* SET ERROR: The field must be a valid U.S. phone number (e.g. 888-888-8888) */
return sprintf( __( 'Enter valid %s', 'buddyboss' ), $field_name );
}
$valid_number = preg_match( '/^(\+\s*)?(?=([.,\s()-]*\d){8})([\d(][\d.,\s()-]*)([[:alpha:]#][^\d]*\d.*)?$/', $str, $matches ) && preg_match( '/\d{2}/', $str );
if ( $valid_number ) {
return $retval;
}
/* SET ERROR: The field must be a valid phone number (e.g. 888-888-8888) */
return sprintf( __( 'Enter valid %s', 'buddyboss' ), $field_name );
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.