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

时间:2014-03-24 17:35:19

标签: php regex sanitization

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

3 个答案:

答案 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 = "";
}