PHPを使用したいこの質問を見つけた人のために、クレジットカード番号(すべての数字、ダッシュ、またはスペース)を取得し、最初と最後の4桁を除くすべてを「X」に置き換える関数を使用します。
ダッシュ付きのクレジットカード番号も受け入れるには、代わりに次の正規表現パターンを使用します。
$cc_regex_pattern = '/(\d{4})(-)?(\d{4})(-)?(\d{4})(-)?(\d{4})/'
ダッシュを削除するcc番号の前処理を削除します。
$compressed_cc_number = preg_replace('/(\ |-)/', '', $credit_card_number);
したがって、置換文字列は次のようになります(パターンのインデックスを変更したため、$ 7に注意してください)。
$cc_regex_replacement = '$1' . $cc_middle_pattern . '$7';
または、必要に応じて、元の質問のように、cc番号全体を置き換えるだけです。
$cc_regex_replacement = 'XXXX$2XXXX$4XXXX$6XXXX';
スペースまたはダッシュの有無にかかわらず、クレジットカード番号の元の関数は次のとおりです。これにより、ダッシュがわかりにくくなり、削除されます。
/**
* @param integer|string $credit_card_number
* @return mixed
*/
static function obfuscate_credit_card($credit_card_number)
{
$compressed_cc_number = preg_replace('/(\ |-)/', '', $credit_card_number);
$cc_length = strlen($compressed_cc_number);
$cc_middle_length = $cc_length >= 9 ? $cc_length - 8 : 0;
//create middle pattern
$cc_middle_pattern = '';
for ($i = 0; $i < $cc_middle_length; $i++) {
$cc_middle_pattern .= 'X';
}
//replace cc middle digits with middle pattern
$cc_regex_pattern = '/(\d{4})(\d+)(\d{4})/';
$cc_regex_replacement = '$1' . $cc_middle_pattern . '$3';
$obfuscated_cc = preg_replace($cc_regex_pattern, $cc_regex_replacement, $compressed_cc_number);
return $obfuscated_cc;
}