在长字符串中查找15或16位数字


PHP Find a 15 or 16-digit number in a long string

我正在研究一个函数,通过将除最后4位以外的所有数字替换为X来消毒信用卡数据。问题是,我有很多数据已经存储在数据库中的json对象。每条记录中可能有也可能没有卡号,它们出现在每个记录的文本中的不同位置(有时在最后,有时在中间,等等)寻找一种从字符串中提取所有15位或16位数字的方法,以便我可以将这个数字传递给清理函数。

寻找从字符串

中提取所有15位或16位数字的方法

你可以使用:

'b[0-9]{15,16}'b

在PHP中可以这样使用:

<?php
$subject="aa999999999999999aa888888888888888as555555ssd555fs22aa999999999999999a";//Your string
preg_match_all('/(?:[0-9]{15,16})+/s', $subject, $result, PREG_PATTERN_ORDER);
$result = $result[0];
print_r($result);//Printing result
输出:

Array ( [0] => 999999999999999 [1] => 888888888888888 [2] => 999999999999999 ) 

如果你只想要第一个数字,那么你可以用这个代替:

if (preg_match('/([0-9]{15,16})/s', $subject, $regs)) {
    $result = $regs[0];
} else {
    $result = "";
}

如果它作为json对象存储在DB中,并且您想在对象中找到一个属性,您将需要使用json_decode()来获取记录并使其成为php Stdclass。

所以如果json记录看起来像这样:

$record = "{ 'name' : 'theSpurg', 'cc_num' : '139764518623' }"

你可以像这样访问

$test = json_decode($record);
$credi_num = $test->cc_num;

如果这不是你想要的,那么我误解了情况。欢呼声