Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在脚本中找到所有提到CVV的数字,然后将数字替换为*。在PHP中使用正则表达式_Php_Regex - Fatal编程技术网

如何在脚本中找到所有提到CVV的数字,然后将数字替换为*。在PHP中使用正则表达式

如何在脚本中找到所有提到CVV的数字,然后将数字替换为*。在PHP中使用正则表达式,php,regex,Php,Regex,我有一个脚本,其中有许多信用卡CVV号码,我希望能够搜索单词CVV,并替换它后面的CVV号码。这是脚本文档 对不起,我应该提一下。因此,例如,如果我在同一文档/脚本中再次提到CVV,旁边还有其他字母或不必要的字符,我需要一种方法来过滤掉CVV和数字,然后使用正则表达式屏蔽数字本身 我看了很多视频,搜索了regex文档的分配,但我似乎无法理解 <?php function displayInfo(){ $ccPattern = "/(?:4[0-9]{12}(?:[0-9]{3})?|5[

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


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

我看了很多视频,搜索了regex文档的分配,但我似乎无法理解

<?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|35\d{3})\d{11})/";

$cvvPattern = "/(cvv\W{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();

?>

使用:

100
将处于
$1
位置


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

解释

  • \bcardCVV
    单词边界和匹配cardCVV
  • h+:\h+
    在水平空白字符的1+倍之间匹配
  • \K
    忘记匹配的内容
  • \d+
    匹配1+个数字


你可以用这个对不起,我应该在全球范围内提到。例如,如果我在同一份文件/脚本中再次提到CVV,旁边还有其他字母或不必要的字符,我需要一种过滤CVV和数字的方法,然后屏蔽数字本身。你应该用这些信息更新你的问题,包括你预期会遇到的输入数据和你希望解释的内容。
cardCVV : (\d+)
\bcardCVV\h+:\h+\K\d+
$re = '/\bcardCVV\h+:\h+\K\d+/';
$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 : ***