我正在开发一种功能,通过用X替换最后4位以外的所有数字来清理信用卡数据。问题是我有很多数据已经作为json对象存储在数据库中。每条记录在其中某处可能有也可能没有卡号,它们出现在文本中不同的地方,从记录到记录(有时在最后,有时在中间等)寻找一种方法来提取所有15 - 字符串中的数字或16位数字,以便我可以将此数字传递给清理函数。
答案 0 :(得分:0)
寻找从字符串
中提取所有15位或16位数字的方法
您可以使用:
\b[0-9]{15,16}\b
答案 1 :(得分:0)
如果它作为json对象存储在数据库中,并且您想要在对象中找到属性,那么您将要使用json_decode()来获取记录并使其成为php Stdclass。
所以如果json记录如下:
$record = "{ 'name' : 'theSpurg', 'cc_num' : '139764518623' }"
您可以像这样访问它
$test = json_decode($record);
$credi_num = $test->cc_num;
如果那不是您正在寻找的东西那么我就误解了这种情况。 干杯
答案 2 :(得分:0)
在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 = "";
}