us.php
来自「视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.」· PHP 代码 · 共 179 行
PHP
179 行
<?php/* vim: set expandtab tabstop=4 shiftwidth=4: */// +----------------------------------------------------------------------+// | PHP Version 4 |// +----------------------------------------------------------------------+// | Copyright (c) 1997-2003 The PHP Group |// +----------------------------------------------------------------------+// | This source file is subject to version 2.02 of the PHP license, |// | that is bundled with this package in the file LICENSE, and is |// | available at through the world-wide-web at |// | http://www.php.net/license/2_02.txt. |// | If you did not receive a copy of the PHP license and are unable to |// | obtain it through the world-wide-web, please send a note to |// | license@php.net so we can mail you a copy immediately. |// +----------------------------------------------------------------------+// | Authors: Brent Cook <busterb@mail.utexas.edu> |// | Tim Gallagher <timg@sunflowerroad.com> |// +----------------------------------------------------------------------+//// $Id: US.php,v 1.9 2003/02/17 04:25:35 pajoye Exp $//// Specific validation methods for data used in the United States//require_once 'PEAR.php';require_once 'File.php';class Validate_US{ /** * Validates a social security number * @param string $ssn number to validate * @param array $high_groups array of highest issued SSN group numbers * @returns bool */ function ssn($ssn, $high_groups = null) { // remove any dashes, spaces, returns, tabs or slashes $ssn = str_replace(array('-','/',' ',"\t","\n"), '', $ssn); // check if this is a 9-digit number if (!is_numeric($ssn) || !(strlen($ssn) == 9)) { return false; } $area = intval(substr($ssn, 0, 3)); $group = intval(substr($ssn, 3, 2)); $serial = intval(substr($ssn, 5, 4)); if (is_null($high_groups)) { $high_groups = Validate_US::ssnGetHighGroups(); } return Validate_US::ssnCheck($area, $group, $serial, $high_groups); } /** * Returns a range for a supplied group number, which * is the middle, two-digit field of a SSN. * Group numbers are defined as follows: * 1 - Odd numbers, 01 to 09 * 2 - Even numbers, 10 to 98 * 3 - Even numbers, 02 to 08 * 4 - Odd numbers, 11 to 99 * @param int $groupNumber a group number to check, 00-99 * @return int */ function ssnGroupRange($groupNumber) { if(is_array($groupNumber)){ extract($groupNumber); } if ($groupNumber < 10) { // is the number odd? if ($groupNumber % 2) { return 1; } else { return 3; } } else { // is the number odd? if ($groupNumber % 2) { return 4; } else { return 2; } } } /** * checks if a Social Security Number is valid * needs the first three digits and first two digits and the * final four digits as separate integer parameters * @param int $area 3-digit group in a SSN * @param int $group 2-digit group in a SSN * @param int $serial 4-digit group in a SSN * @param array $high_groups array of highest issued group numbers * area number=>group number */ function ssnCheck($ssnCheck, $group, $serial, &$high_groups) { if(is_array($ssnCheck)){ extract($ssnCheck); } // perform trivial checks // no field should contain all zeros if (!($area && $group && $serial)) { return false; } // check if this area has been assigned yet if (!($high_group = $high_groups[$area])) { return false; } $high_group_range = Validate_US::ssnGroupRange($high_group); $group_range = Validate_US::ssnGroupRange($group); // if the assigned range is higher than this group number, we're OK if ($high_group_range > $group_range) { return true; } else { // if the assigned range is lower than the group number, that's bad if ($high_group_range < $group_range) { return false; } else { // we must be in the same range, check the actual numbers if ($high_group >= $group) { return true; } else { return false; } } } } /** * Gets the most current list the highest SSN group numbers issued * from the Social Security Administration website. This info can be * cached for performance (and to lessen the load on the SSA website) * * @param string $uri Path to the SSA highgroup.htm file * @param bool $is_text Take the $highgroup_htm param as directly the contents * @returns array */ function ssnGetHighGroups($uri = 'http://www.ssa.gov/foia/highgroup.htm', $is_text = false) { if (!$is_text) { if (!$fd = @fopen($source, 'r')) { trigger_error("Could not access the SSA High Groups file", E_USER_WARNING); return array(); } $source = ''; while ($data = fread($fd, 2048)) { $source .= $data; } fclose($fd); } $search = array ("'<script[^>]*?>.*?</script>'si", // Strip javascript "'<[\/\!]*?[^<>]*?>'si", // Strip html tags "'([\r\n])[\s]+'", // Strip white space "'\*'si"); $replace = array ('','','\\1',''); $lines = explode("\n", preg_replace($search, $replace, $source)); $high_groups = array(); foreach ($lines as $line) { $line = trim($line); if ((strlen($line) == 3) && is_numeric($line)) { $current_group = $line; } elseif ((strlen($line) == 2) && is_numeric($line)) { $high_groups[$current_group] = $line; } } return $high_groups; }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?