如何在脚本中用数字查找所有提及的 CVV,然后仅用 * 替换数字.将正则表达式与 PHP 一起使用



我有一个脚本,里面有很多信用卡CVV号码,我希望能够搜索CVV这个词,只替换它后面的CVV号码。 这是脚本文档。

对不起,我应该在全球范围内提及。 因此,例如,如果我在同一文档/脚本中再次提及 CVV,旁边还有其他字母或不必要的字符,我需要一种方法来过滤掉 CVV 和数字,然后使用正则表达式屏蔽数字本身。

我看过很多视频并搜索了大量的正则表达式文档,但我似乎无法弄清楚。

<?php
function displayInfo(){
$ccPattern = "/(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9] 
[0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}| 
(?:2131|1800|35d{3})d{11})/";
$cvvPattern = "/(cvvW{0,5}w{0,12})(d{0,3})/";
$ExpPattern = "//";
$nsInfo = "orderId : 212939129" . "<br>" . 
          "orderNumber : INV10001" . "<br>" .
          "salesTax : 1.00" . "<br>" .
          "amount : 21.00" . "<br>" .
          "terminal : 5" . "<br>" .
          "currency : 1" . "<br>" .
          "type : purchase" . "<br>" .
          "avsStreet : 123 Road" . "<br>" .
          "avsZip : A1A 2B2" . "<br>" .
          "customerCode : CST1001" . "<br>" .
          "cardId : 18951828182" . "<br>" .
          "cardHolderName : John Smith" . "<br>" .
          "cardNumber : 5454545454545454" . "<br>" .
          "cardExpiry : 1025" . "<br>" .
          "cardCVV : 100";
$maskcc = preg_replace($ccPattern, "****************", $nsInfo);
$maskCVV = preg_replace($cvvPattern, "***", $nsInfo);
echo $maskcc;
echo $maskCVV;
}
displayInfo();
?>

使用:

cardCVV : (d+)

100将处于$1位置。

https://regex101.com/r/4LSLBy/1/

如果您只想将 cardCVV 后面的数字替换为 ***,您可以将 preg_replace 与:

bcardCVVh+:h+Kd+

解释

  • bcardCVV词边界和匹配卡CVV
  • h+:h+ 匹配 1+ 乘以水平空格字符之间的:
  • K 忘记匹配的内容
  • d+匹配 1+ 位数字

正则表达式演示

$re = '/bcardCVVh+:h+Kd+/';
$nsInfo = "orderId : 212939129" . "<br>" .
    "orderNumber : INV10001" . "<br>" .
    "salesTax : 1.00" . "<br>" .
    "amount : 21.00" . "<br>" .
    "terminal : 5" . "<br>" .
    "currency : 1" . "<br>" .
    "type : purchase" . "<br>" .
    "avsStreet : 123 Road" . "<br>" .
    "avsZip : A1A 2B2" . "<br>" .
    "customerCode : CST1001" . "<br>" .
    "cardId : 18951828182" . "<br>" .
    "cardHolderName : John Smith" . "<br>" .
    "cardNumber : 5454545454545454" . "<br>" .
    "cardExpiry : 1025" . "<br>" .
    "cardCVV : 100";
$result = preg_replace($re, "***", $nsInfo);
echo $result;

结果

orderId : 212939129
orderNumber : INV10001
salesTax : 1.00
amount : 21.00
terminal : 5
currency : 1
type : purchase
avsStreet : 123 Road
avsZip : A1A 2B2
customerCode : CST1001
cardId : 18951828182
cardHolderName : John Smith
cardNumber : 5454545454545454
cardExpiry : 1025
cardCVV : ***

最新更新