份证号验证(兼容15,18位) ,注册验证的时候可以用上。
代码片段(1)
[代码] [PHP]代码
view source print?01
//比较菜鸟 第一次分享代码
02
//身份证号验证
03
protected
function
checkIdCard(){
04
if
(
empty
(
$_POST
[
'idcard'
])){
05
return
false;
06
}
07
$idcard
=
$_POST
[
'idcard'
];
08
$City
=
array
(11=>
"北京"
,12=>
"天津"
,13=>
"河北"
,14=>
"山西"
,15=>
"内蒙古"
,21=>
"辽宁"
,22=>
"吉林"
,23=>
"黑龙江"
,31=>
"上海"
,32=>
"江苏"
,33=>
"浙江"
,34=>
"安徽"
,35=>
"福建"
,36=>
"江西"
,37=>
"山东"
,41=>
"河南"
,42=>
"湖北"
,43=>
"湖南"
,44=>
"广东"
,45=>
"广西"
,46=>
"海南"
,50=>
"重庆"
,51=>
"四川"
,52=>
"贵州"
,53=>
"云南"
,54=>
"西藏"
,61=>
"陕西"
,62=>
"甘肃"
,63=>
"青海"
,64=>
"宁夏"
,65=>
"新疆"
,71=>
"台湾"
,81=>
"香港"
,82=>
"澳门"
,91=>
"国外"
);
09
$iSum
= 0;
10
$idCardLength
=
<code class="functions">strlen(
$idcard
);
11
//长度验证
12
if
(!preg_match(
'/^\d{17}(\d|x)$/i'
,
$idcard
)
and
!preg_match(
'/^\d{15}$/i'
,
$idcard
))
13
{
14
return
false;
15
}
16
//地区验证
17
if
(!
array_key_exists
(
intval
(
substr
(
$idcard
,0,2)),
$City
))
18
{
19
return
false;
20
}
21
// 15位身份证验证生日,转换为18位
22
if
(
$idCardLength
== 15)
23
{
24
$sBirthday
=
'19'
.
substr
(
$idcard
,6,2).
'-'
.
substr
(
$idcard
,8,2).
'-'
.
substr
(
$idcard
,10,2);
25
$d
=
new
DateTime(
$sBirthday
);
26
$dd
=
$d
->format(
'Y-m-d'
);
27
if
(
$sBirthday
!=
$dd
)
28
{
29
return
false;
30
}
31
$idcard
=
substr
(
$idcard
,0,6).
"19"
.
substr
(
$idcard
,6,9);
//15to18
32
$Bit18
= getVerifyBit(
$idcard
);
//算出第18位校验码
33
$idcard
=
$idcard
.
$Bit18
;
34
}
35
// 判断是否大于2078年,小于1900年
36
<code class="variable">$year =
substr
(
$idcard
,6,4);
37
if
(
<code class="variable">$year<code class="variable">$year
>2078 )
38
{
39
return
false;
40
}
41
42
//18位身份证处理
43
$sBirthday
=
substr
(
$idcard
,6,4).
'-'
.
substr
(
$idcard
,10,2).
'-'
.
substr
(
$idcard
,12,2);
44
$d
=
new
DateTime(
$sBirthday
);
45
$dd
=
$d
->format(
'Y-m-d'
);
46
if
(
$sBirthday
!=
$dd
)
47
{
48
return
false;
49
}
50
//身份证编码规范验证
51
$idcard_base
=
substr
(
$idcard
,0,17);
52
if
(
strtoupper
(
substr
(
$idcard
,17,1)) != getVerifyBit(
$idcard_base
))
53
{
54
return
false;
55
}
56
return
$_POST
[
'idcard'
];
57
}
58
59
// 计算身份证校验码,根据国家标准GB 11643-1999
60
function
getVerifyBit(
$idcard_base
)
61
{
62
if
(
<code class="functions">strlen(
$idcard_base
) != 17)
63
{
64
return
false;
65
}
66
//加权因子
67
$factor
=
array
(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
68
//校验码对应值
69
$verify_number_list
=
array
(
'1'
,
'0'
,
'X'
,
'9'
,
'8'
,
'7'
,
'6'
,
'5'
,
'4'
,
'3'
,
'2'
);
70
$checksum
= 0;
71
for
(
$i
= 0;
$i
<code class="functions">strlen
(
$idcard_base
);
$i
++)
72
{
73
$checksum
+=
substr
(
$idcard_base
,
$i
, 1) *
$factor
[
$i
];
74
}
75
$mod
=
$checksum
% 11;
76
$verify_number
=
$verify_number_list
[
$mod
];
77
return
$verify_number
;
78
}

TomakePHPapplicationsfaster,followthesesteps:1)UseOpcodeCachinglikeOPcachetostoreprecompiledscriptbytecode.2)MinimizeDatabaseQueriesbyusingquerycachingandefficientindexing.3)LeveragePHP7 Featuresforbettercodeefficiency.4)ImplementCachingStrategiessuc

ToimprovePHPapplicationspeed,followthesesteps:1)EnableopcodecachingwithAPCutoreducescriptexecutiontime.2)ImplementdatabasequerycachingusingPDOtominimizedatabasehits.3)UseHTTP/2tomultiplexrequestsandreduceconnectionoverhead.4)Limitsessionusagebyclosin

Dependency injection (DI) significantly improves the testability of PHP code by explicitly transitive dependencies. 1) DI decoupling classes and specific implementations make testing and maintenance more flexible. 2) Among the three types, the constructor injects explicit expression dependencies to keep the state consistent. 3) Use DI containers to manage complex dependencies to improve code quality and development efficiency.

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi

PHPisusedforsendingemailsduetoitsbuilt-inmail()functionandsupportivelibrarieslikePHPMailerandSwiftMailer.1)Usethemail()functionforbasicemails,butithaslimitations.2)EmployPHPMailerforadvancedfeatureslikeHTMLemailsandattachments.3)Improvedeliverability

PHP performance bottlenecks can be solved through the following steps: 1) Use Xdebug or Blackfire for performance analysis to find out the problem; 2) Optimize database queries and use caches, such as APCu; 3) Use efficient functions such as array_filter to optimize array operations; 4) Configure OPcache for bytecode cache; 5) Optimize the front-end, such as reducing HTTP requests and optimizing pictures; 6) Continuously monitor and optimize performance. Through these methods, the performance of PHP applications can be significantly improved.

DependencyInjection(DI)inPHPisadesignpatternthatmanagesandreducesclassdependencies,enhancingcodemodularity,testability,andmaintainability.Itallowspassingdependencieslikedatabaseconnectionstoclassesasparameters,facilitatingeasiertestingandscalability.

CachingimprovesPHPperformancebystoringresultsofcomputationsorqueriesforquickretrieval,reducingserverloadandenhancingresponsetimes.Effectivestrategiesinclude:1)Opcodecaching,whichstorescompiledPHPscriptsinmemorytoskipcompilation;2)DatacachingusingMemc


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Zend Studio 13.0.1
Powerful PHP integrated development environment

WebStorm Mac version
Useful JavaScript development tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Mac version
God-level code editing software (SublimeText3)
