Skip to content

Instantly share code, notes, and snippets.

@sergeliatko
Last active October 3, 2017 10:01
Show Gist options
  • Save sergeliatko/3f4d8cb27e4e91c6c1086c654008b5c4 to your computer and use it in GitHub Desktop.
Save sergeliatko/3f4d8cb27e4e91c6c1086c654008b5c4 to your computer and use it in GitHub Desktop.
PHP funtion to mask credit card number
<?php
/**
* Masks credit card number leaving up to 4 last available digits.
*
* @param string $n Credit card number (up to 16 characters)
* @param string $m Masking string
* @param int $v Maximum number of visible characters at the end of the credit card number (in range of 0-4)
*
* @return string
*/
function vendor_mask_card_number( $n = '', $m = 'X', $v = 4 ) {
$n = substr( $n, -16 );
$v = ( 4 < ( $v = abs( intval( $v ) ) ) ) ? 4 : $v;
$l = ( ( 16 - $v ) > ( $l = abs( intval( 16 - strlen( $n ) ) ) ) ) ? 12 : $l;
return substr_replace( str_pad( $n, 16, $m, STR_PAD_LEFT ), str_repeat( $m, $l ), 0, $l );
}
@sergeliatko
Copy link
Author

// outputs: XXXXXXXXXXXX3456
$cc_number = '1234567890123456';
echo vendor_mask_card_number( $cc_number );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment