PHP常用函数

常用排序算法

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function bubble_sort($arr){
$length = count($arr);
if($length<=1){
return $arr;
}
for($i=0;$i<$length;$i++){
for($j=$length-1;$j>$i;$j--){
if($arr[$j]<$arr[$j-1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr;
}

快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function quick_sort($arr){
$length = count($arr);
if($length <=1){
return $arr;
}
$pivot = $arr[0];//枢轴
$left_arr = array();
$right_arr = array();
for($i=1;$i<$length;$i++){//注意$i从1开始0是枢轴
if($arr[$i]<=$pivot){
$left_arr[] = $arr[$i];
}else{
$right_arr[] = $arr[$i];
}
}
$left_arr = quick_sort($left_arr);//递归排序左半部分
$right_arr = quick_sort($right_arr);//递归排序右半部份
return array_merge($left_arr,array($pivot),$right_arr);//合并左半部分、枢轴、右半部分
}

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//(不稳定)
function select_sort($arr){
$length = count($arr);
if($length<=1){
return $arr;
}
for($i=0;$i<$length;$i++){
$min = $i;
for($j=$i+1;$j<$length;$j++){
if($arr[$j]<$arr[$min]){
$min = $j;
}
}
if($i != $min){
$tmp = $arr[$i];
$arr[$i] = $arr[$min];
$arr[$min] = $tmp;
}
}
return $arr;
}

插入排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
function insert_sort($arr){
$length = count($arr);
if($length <=1){
return $arr;
}
for($i=1;$i<$length;$i++){
$x = $arr[$i];
$j = $i-1;
while($x<$arr[$j] && $j>=0){
$arr[$j+1] = $arr[$j];
$j--;
}
$arr[$j+1] = $x;
}
return $arr;
}

常用查找算法

二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function binary_search($arr,$low,$high,$key){
while($low<=$high){
$mid = intval(($low+$high)/2);
if($key == $arr[$mid]){
return $mid+1;
}elseif($key<$arr[$mid]){
$high = $mid-1;
}elseif($key>$arr[$mid]){
$low = $mid+1;
}
}
return -1;
}

顺序查找

1
2
3
4
5
6
7
8
9
10
<?php
function sq_search($arr,$key){
$length = count($arr);
for($i=0;$i<$length;$i++){
if($key == $arr[$i]){
return $i+1;
}
}
return -1;
}

常用数据结构

线性表的删除

1
2
3
4
5
6
7
8
9
10
11
12
<?php
function delete_array_element($arr,$pos){
$length = count($arr);
if($pos<1 || $pos>$length){
return "删除位置出错!";
}
for($i=$pos-1;$i<$length-1;$i++){
$arr[$i] = $arr[$i+1];
}
array_pop($arr);
return $arr;
}

约瑟夫环问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
//方法一
function joseph_ring($n,$m){
$arr = range(1,$n);
$i = 0;
while(count($arr)>1){
$i=$i+1;
$head = array_shift($arr);
if($i%$m != 0){ //如果不是则重新压入数组
array_push($arr,$head);
}
}
return $arr[0];
}
//方法二
function joseph_ring2($n,$m){
$r = 0;
for($i=2;$i<=$n;$i++){
$r = ($r+$m)%$i;
}
return $r + 1;
}

计算笛卡尔乘积

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
function dikaer(){
$arr = func_get_args();
$arr1 = array();
$result = array_shift($arr);
while ($arr2 = array_shift($arr)) {
$arr1 = $result;
$result = array();
foreach ($arr1 as $v1) {
foreach ($arr2 as $v2) {
if (!is_array($v1)) $v1 = array($v1);
if (!is_array($v2)) $v2 = array($v2);
$result[] = array_merge_recursive($v1, $v2);
}
}
}
return $result;
}

驼峰下划线相互转换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
/**
* 下划线转驼峰
* 思路:
* step1.原字符串转小写,原字符串中的分隔符用空格替换,在字符串开头加上分隔符
* step2.将字符串中每个单词的首字母转换为大写,再去空格,去字符串首部附加的分隔符.
* @param string $uncamelized_words
* @param string $separator
* @return string
*/
function camelize($uncamelized_words,$separator='_'){
$uncamelized_words = $separator. str_replace($separator, " ", strtolower($uncamelized_words));
return ltrim(str_replace(" ", "", ucwords($uncamelized_words)), $separator );
}

/**
* 驼峰命名转下划线命名
* 思路:小写和大写紧挨一起的地方,加上分隔符,然后全部转小写
* @param string $camel_caps
* @param string $separator
* @return string
*/
function uncamelize($camel_caps,$separator='_'){
return strtolower(preg_replace('/([a-z])([A-Z])/', "$1" . $separator . "$2", $camel_caps));
}

斐波那契算法

1
2
3
4
5
6
7
8
9
10
<?php
/**
* 斐波那契算法
* @param int $i
* @return int
*/
function fibonacci(int $i){
if ($i < 2) return $i;
return fibonacci($i - 2) + fibonacci($i - 1);
}

生成随机信用卡号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
/**
* 生成随机信用卡号
* @param string $org
* @return mixed|string
*/
function create_creditcard($org = ''){
$prefixs = [
'bankcard' => [5610, 560221, 560222, 560223, 560224, 560225],
'china_union_pay' => [62],
'diners' => [36, 54, 55, 300, 301, 302, 303, 304, 305],
'discover' => [6011, 644, 645, 646, 647, 648, 649, 65],
'jcb' => [3528, 3589],
'mastercard' => [51, 52, 53, 54, 55],
'visa' => [4485, 4532, 4539, 4556, 4716, 4916, 4929],
];

if ($org && isset($prefixs[$org])) {
$ccnumber = array_rand($prefixs[$org]);
} else {
$prefixs_tmp = [];
foreach ($prefixs as $prefix) {
$prefixs_tmp = array_merge($prefixs_tmp, $prefix);
}
$ccnumber = $prefixs_tmp[array_rand($prefixs_tmp)];
echo '<pre>';
print_r($ccnumber);
}

$length = 16;

// generate digits
while (strlen($ccnumber) < ($length - 1)) {
$ccnumber .= rand(0, 9);
}
// Calculate sum
$sum = 0;
$pos = 0;
$reversedCCnumber = strrev($ccnumber);
while ($pos < $length - 1) {
$odd = $reversedCCnumber[$pos] * 2;
if ($odd > 9) {
$odd -= 9;
}
$sum += $odd;
if ($pos != ($length - 2)) {
$sum += $reversedCCnumber[$pos + 1];
}
$pos += 2;
}
// Calculate check digit
$checkdigit = ((floor($sum / 10) + 1) * 10 - $sum) % 10;
$ccnumber .= $checkdigit;
return $ccnumber;
}

生成随机身份证号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
<?php
/**
* 生成随机身份证号码
* @param $base
* @return string
*/
function create_idcard($base){
$content = '';
//身份证起止年月 eg:1990年12月31日 mktime(0,0,0,12,31,1990)
$Year_start = mktime(0, 0, 0, 1, 1, 1950);
$Year_end = mktime(0, 0, 0, 12, 31, 1992);
//全国区域代码 共3131
$Region = array(
110101, 110102, 110105, 110106, 110107, 110108, 110109, 110111, 110112, 110113, 110114, 110115,
110116, 110117, 110228, 110229, 120101, 120102, 120103, 120104, 120105, 120106, 120110, 120111,
120112, 120113, 120114, 120115, 120116, 120221, 120223, 120225, 130101, 130102, 130103, 130104,
130105, 130107, 130108, 130121, 130123, 130124, 130125, 130126, 130127, 130128, 130129, 130130,
130131, 130132, 130133, 130181, 130182, 130183, 130184, 130185, 130201, 130202, 130203, 130204,
130205, 130207, 130208, 130209, 130223, 130224, 130225, 130227, 130229, 130281, 130283, 130301,
130302, 130303, 130304, 130321, 130322, 130323, 130324, 130401, 130402, 130403, 130404, 130406,
130421, 130423, 130424, 130425, 130426, 130427, 130428, 130429, 130430, 130431, 130432, 130433,
130434, 130435, 130481, 130501, 130502, 130503, 130521, 130522, 130523, 130524, 130525, 130526,
130527, 130528, 130529, 130530, 130531, 130532, 130533, 130534, 130535, 130581, 130582, 130601,
130602, 130603, 130604, 130621, 130622, 130623, 130624, 130625, 130626, 130627, 130628, 130629,
130630, 130631, 130632, 130633, 130634, 130635, 130636, 130637, 130638, 130681, 130682, 130683,
130684, 130701, 130702, 130703, 130705, 130706, 130721, 130722, 130723, 130724, 130725, 130726,
130727, 130728, 130729, 130730, 130731, 130732, 130733, 130801, 130802, 130803, 130804, 130821,
130822, 130823, 130824, 130825, 130826, 130827, 130828, 130901, 130902, 130903, 130921, 130922,
130923, 130924, 130925, 130926, 130927, 130928, 130929, 130930, 130981, 130982, 130983, 130984,
131001, 131002, 131003, 131022, 131023, 131024, 131025, 131026, 131028, 131081, 131082, 131101,
131102, 131121, 131122, 131123, 131124, 131125, 131126, 131127, 131128, 131181, 131182, 140101,
140105, 140106, 140107, 140108, 140109, 140110, 140121, 140122, 140123, 140181, 140201, 140202,
140203, 140211, 140212, 140221, 140222, 140223, 140224, 140225, 140226, 140227, 140301, 140302,
140303, 140311, 140321, 140322, 140401, 140402, 140411, 140421, 140423, 140424, 140425, 140426,
140427, 140428, 140429, 140430, 140431, 140481, 140501, 140502, 140521, 140522, 140524, 140525,
140581, 140601, 140602, 140603, 140621, 140622, 140623, 140624, 140701, 140702, 140721, 140722,
140723, 140724, 140725, 140726, 140727, 140728, 140729, 140781, 140801, 140802, 140821, 140822,
140823, 140824, 140825, 140826, 140827, 140828, 140829, 140830, 140881, 140882, 140901, 140902,
140921, 140922, 140923, 140924, 140925, 140926, 140927, 140928, 140929, 140930, 140931, 140932,
140981, 141001, 141002, 141021, 141022, 141023, 141024, 141025, 141026, 141027, 141028, 141029,
141030, 141031, 141032, 141033, 141034, 141081, 141082, 141101, 141102, 141121, 141122, 141123,
141124, 141125, 141126, 141127, 141128, 141129, 141130, 141181, 141182, 150101, 150102, 150103,
150104, 150105, 150121, 150122, 150123, 150124, 150125, 150201, 150202, 150203, 150204, 150205,
150206, 150207, 150221, 150222, 150223, 150301, 150302, 150303, 150304, 150401, 150402, 150403,
150404, 150421, 150422, 150423, 150424, 150425, 150426, 150428, 150429, 150430, 150501, 150502,
150521, 150522, 150523, 150524, 150525, 150526, 150581, 150601, 150602, 150621, 150622, 150623,
150624, 150625, 150626, 150627, 150701, 150702, 150721, 150722, 150723, 150724, 150725, 150726,
150727, 150781, 150782, 150783, 150784, 150785, 150801, 150802, 150821, 150822, 150823, 150824,
150825, 150826, 150901, 150902, 150921, 150922, 150923, 150924, 150925, 150926, 150927, 150928,
150929, 150981, 152201, 152202, 152221, 152222, 152223, 152224, 152501, 152502, 152522, 152523,
152524, 152525, 152526, 152527, 152528, 152529, 152530, 152531, 152921, 152922, 152923, 210101,
210102, 210103, 210104, 210105, 210106, 210111, 210112, 210113, 210114, 210122, 210123, 210124,
210181, 210201, 210202, 210203, 210204, 210211, 210212, 210213, 210224, 210281, 210282, 210283,
210301, 210302, 210303, 210304, 210311, 210321, 210323, 210381, 210401, 210402, 210403, 210404,
210411, 210421, 210422, 210423, 210501, 210502, 210503, 210504, 210505, 210521, 210522, 210601,
210602, 210603, 210604, 210624, 210681, 210682, 210701, 210702, 210703, 210711, 210726, 210727,
210781, 210782, 210801, 210802, 210803, 210804, 210811, 210881, 210882, 210901, 210902, 210903,
210904, 210905, 210911, 210921, 210922, 211001, 211002, 211003, 211004, 211005, 211011, 211021,
211081, 211101, 211102, 211103, 211121, 211122, 211201, 211202, 211204, 211221, 211223, 211224,
211281, 211282, 211301, 211302, 211303, 211321, 211322, 211324, 211381, 211382, 211401, 211402,
211403, 211404, 211421, 211422, 211481, 220101, 220102, 220103, 220104, 220105, 220106, 220112,
220122, 220181, 220182, 220183, 220201, 220202, 220203, 220204, 220211, 220221, 220281, 220282,
220283, 220284, 220301, 220302, 220303, 220322, 220323, 220381, 220382, 220401, 220402, 220403,
220421, 220422, 220501, 220502, 220503, 220521, 220523, 220524, 220581, 220582, 220601, 220602,
220605, 220621, 220622, 220623, 220681, 220701, 220702, 220721, 220722, 220723, 220724, 220801,
220802, 220821, 220822, 220881, 220882, 222401, 222402, 222403, 222404, 222405, 222406, 222424,
222426, 230101, 230102, 230103, 230104, 230108, 230109, 230110, 230111, 230112, 230123, 230124,
230125, 230126, 230127, 230128, 230129, 230182, 230183, 230184, 230201, 230202, 230203, 230204,
230205, 230206, 230207, 230208, 230221, 230223, 230224, 230225, 230227, 230229, 230230, 230231,
230281, 230301, 230302, 230303, 230304, 230305, 230306, 230307, 230321, 230381, 230382, 230401,
230402, 230403, 230404, 230405, 230406, 230407, 230421, 230422, 230501, 230502, 230503, 230505,
230506, 230521, 230522, 230523, 230524, 230601, 230602, 230603, 230604, 230605, 230606, 230621,
230622, 230623, 230624, 230701, 230702, 230703, 230704, 230705, 230706, 230707, 230708, 230709,
230710, 230711, 230712, 230713, 230714, 230715, 230716, 230722, 230781, 230801, 230803, 230804,
230805, 230811, 230822, 230826, 230828, 230833, 230881, 230882, 230901, 230902, 230903, 230904,
230921, 231001, 231002, 231003, 231004, 231005, 231024, 231025, 231081, 231083, 231084, 231085,
231101, 231102, 231121, 231123, 231124, 231181, 231182, 231201, 231202, 231221, 231222, 231223,
231224, 231225, 231226, 231281, 231282, 231283, 232721, 232722, 232723, 310101, 310104, 310105,
310106, 310107, 310108, 310109, 310110, 310112, 310113, 310114, 310115, 310116, 310117, 310118,
310120, 310230, 320101, 320102, 320103, 320104, 320105, 320106, 320107, 320111, 320113, 320114,
320115, 320116, 320124, 320125, 320201, 320202, 320203, 320204, 320205, 320206, 320211, 320281,
320282, 320301, 320302, 320303, 320305, 320311, 320312, 320321, 320322, 320324, 320381, 320382,
320401, 320402, 320404, 320405, 320411, 320412, 320481, 320482, 320501, 320505, 320506, 320507,
320508, 320509, 320581, 320582, 320583, 320585, 320601, 320602, 320611, 320612, 320621, 320623,
320681, 320682, 320684, 320701, 320703, 320705, 320706, 320721, 320722, 320723, 320724, 320801,
320802, 320803, 320804, 320811, 320826, 320829, 320830, 320831, 320901, 320902, 320903, 320921,
320922, 320923, 320924, 320925, 320981, 320982, 321001, 321002, 321003, 321012, 321023, 321081,
321084, 321101, 321102, 321111, 321112, 321181, 321182, 321183, 321201, 321202, 321203, 321281,
321282, 321283, 321284, 321301, 321302, 321311, 321322, 321323, 321324, 330101, 330102, 330103,
330104, 330105, 330106, 330108, 330109, 330110, 330122, 330127, 330182, 330183, 330185, 330201,
330203, 330204, 330205, 330206, 330211, 330212, 330225, 330226, 330281, 330282, 330283, 330301,
330302, 330303, 330304, 330322, 330324, 330326, 330327, 330328, 330329, 330381, 330382, 330401,
330402, 330411, 330421, 330424, 330481, 330482, 330483, 330501, 330502, 330503, 330521, 330522,
330523, 330601, 330602, 330621, 330624, 330681, 330682, 330683, 330701, 330702, 330703, 330723,
330726, 330727, 330781, 330782, 330783, 330784, 330801, 330802, 330803, 330822, 330824, 330825,
330881, 330901, 330902, 330903, 330921, 330922, 331001, 331002, 331003, 331004, 331021, 331022,
331023, 331024, 331081, 331082, 331101, 331102, 331121, 331122, 331123, 331124, 331125, 331126,
331127, 331181, 340101, 340102, 340103, 340104, 340111, 340121, 340122, 340123, 340124, 340181,
340201, 340202, 340203, 340207, 340208, 340221, 340222, 340223, 340225, 340301, 340302, 340303,
340304, 340311, 340321, 340322, 340323, 340401, 340402, 340403, 340404, 340405, 340406, 340421,
340501, 340503, 340504, 340506, 340521, 340522, 340523, 340601, 340602, 340603, 340604, 340621,
340701, 340702, 340703, 340711, 340721, 340801, 340802, 340803, 340811, 340822, 340823, 340824,
340825, 340826, 340827, 340828, 340881, 341001, 341002, 341003, 341004, 341021, 341022, 341023,
341024, 341101, 341102, 341103, 341122, 341124, 341125, 341126, 341181, 341182, 341201, 341202,
341203, 341204, 341221, 341222, 341225, 341226, 341282, 341301, 341302, 341321, 341322, 341323,
341324, 341501, 341502, 341503, 341521, 341522, 341523, 341524, 341525, 341601, 341602, 341621,
341622, 341623, 341701, 341702, 341721, 341722, 341723, 341801, 341802, 341821, 341822, 341823,
341824, 341825, 341881, 350101, 350102, 350103, 350104, 350105, 350111, 350121, 350122, 350123,
350124, 350125, 350128, 350181, 350182, 350201, 350203, 350205, 350206, 350211, 350212, 350213,
350301, 350302, 350303, 350304, 350305, 350322, 350401, 350402, 350403, 350421, 350423, 350424,
350425, 350426, 350427, 350428, 350429, 350430, 350481, 350501, 350502, 350503, 350504, 350505,
350521, 350524, 350525, 350526, 350527, 350581, 350582, 350583, 350601, 350602, 350603, 350622,
350623, 350624, 350625, 350626, 350627, 350628, 350629, 350681, 350701, 350702, 350721, 350722,
350723, 350724, 350725, 350781, 350782, 350783, 350784, 350801, 350802, 350821, 350822, 350823,
350824, 350825, 350881, 350901, 350902, 350921, 350922, 350923, 350924, 350925, 350926, 350981,
350982, 360101, 360102, 360103, 360104, 360105, 360111, 360121, 360122, 360123, 360124, 360201,
360202, 360203, 360222, 360281, 360301, 360302, 360313, 360321, 360322, 360323, 360401, 360402,
360403, 360421, 360423, 360424, 360425, 360426, 360427, 360428, 360429, 360430, 360481, 360482,
360501, 360502, 360521, 360601, 360602, 360622, 360681, 360701, 360702, 360721, 360722, 360723,
360724, 360725, 360726, 360727, 360728, 360729, 360730, 360731, 360732, 360733, 360734, 360735,
360781, 360782, 360801, 360802, 360803, 360821, 360822, 360823, 360824, 360825, 360826, 360827,
360828, 360829, 360830, 360881, 360901, 360902, 360921, 360922, 360923, 360924, 360925, 360926,
360981, 360982, 360983, 361001, 361002, 361021, 361022, 361023, 361024, 361025, 361026, 361027,
361028, 361029, 361030, 361101, 361102, 361121, 361122, 361123, 361124, 361125, 361126, 361127,
361128, 361129, 361130, 361181, 370101, 370102, 370103, 370104, 370105, 370112, 370113, 370124,
370125, 370126, 370181, 370201, 370202, 370203, 370205, 370211, 370212, 370213, 370214, 370281,
370282, 370283, 370284, 370285, 370301, 370302, 370303, 370304, 370305, 370306, 370321, 370322,
370323, 370401, 370402, 370403, 370404, 370405, 370406, 370481, 370501, 370502, 370503, 370521,
370522, 370523, 370601, 370602, 370611, 370612, 370613, 370634, 370681, 370682, 370683, 370684,
370685, 370686, 370687, 370701, 370702, 370703, 370704, 370705, 370724, 370725, 370781, 370782,
370783, 370784, 370785, 370786, 370801, 370802, 370811, 370826, 370827, 370828, 370829, 370830,
370831, 370832, 370881, 370882, 370883, 370901, 370902, 370911, 370921, 370923, 370982, 370983,
371001, 371002, 371081, 371082, 371083, 371101, 371102, 371103, 371121, 371122, 371201, 371202,
371203, 371301, 371302, 371311, 371312, 371321, 371322, 371323, 371324, 371325, 371326, 371327,
371328, 371329, 371401, 371402, 371421, 371422, 371423, 371424, 371425, 371426, 371427, 371428,
371481, 371482, 371501, 371502, 371521, 371522, 371523, 371524, 371525, 371526, 371581, 371601,
371602, 371621, 371622, 371623, 371624, 371625, 371626, 371701, 371702, 371721, 371722, 371723,
371724, 371725, 371726, 371727, 371728, 410101, 410102, 410103, 410104, 410105, 410106, 410108,
410122, 410181, 410182, 410183, 410184, 410185, 410201, 410202, 410203, 410204, 410205, 410211,
410221, 410222, 410223, 410224, 410225, 410301, 410302, 410303, 410304, 410305, 410306, 410311,
410322, 410323, 410324, 410325, 410326, 410327, 410328, 410329, 410381, 410401, 410402, 410403,
410404, 410411, 410421, 410422, 410423, 410425, 410481, 410482, 410501, 410502, 410503, 410505,
410506, 410522, 410523, 410526, 410527, 410581, 410601, 410602, 410603, 410611, 410621, 410622,
410701, 410702, 410703, 410704, 410711, 410721, 410724, 410725, 410726, 410727, 410728, 410781,
410782, 410801, 410802, 410803, 410804, 410811, 410821, 410822, 410823, 410825, 410882, 410883,
410901, 410902, 410922, 410923, 410926, 410927, 410928, 411001, 411002, 411023, 411024, 411025,
411081, 411082, 411101, 411102, 411103, 411104, 411121, 411122, 411201, 411202, 411221, 411222,
411224, 411281, 411282, 411301, 411302, 411303, 411321, 411322, 411323, 411324, 411325, 411326,
411327, 411328, 411329, 411330, 411381, 411401, 411402, 411403, 411421, 411422, 411423, 411424,
411425, 411426, 411481, 411501, 411502, 411503, 411521, 411522, 411523, 411524, 411525, 411526,
411527, 411528, 411601, 411602, 411621, 411622, 411623, 411624, 411625, 411626, 411627, 411628,
411681, 411701, 411702, 411721, 411722, 411723, 411724, 411725, 411726, 411727, 411728, 411729,
419001, 420101, 420102, 420103, 420104, 420105, 420106, 420107, 420111, 420112, 420113, 420114,
420115, 420116, 420117, 420201, 420202, 420203, 420204, 420205, 420222, 420281, 420301, 420302,
420303, 420321, 420322, 420323, 420324, 420325, 420381, 420501, 420502, 420503, 420504, 420505,
420506, 420525, 420526, 420527, 420528, 420529, 420581, 420582, 420583, 420601, 420602, 420606,
420607, 420624, 420625, 420626, 420682, 420683, 420684, 420701, 420702, 420703, 420704, 420801,
420802, 420804, 420821, 420822, 420881, 420901, 420902, 420921, 420922, 420923, 420981, 420982,
420984, 421001, 421002, 421003, 421022, 421023, 421024, 421081, 421083, 421087, 421101, 421102,
421121, 421122, 421123, 421124, 421125, 421126, 421127, 421181, 421182, 421201, 421202, 421221,
421222, 421223, 421224, 421281, 421301, 421303, 421321, 421381, 422801, 422802, 422822, 422823,
422825, 422826, 422827, 422828, 429004, 429005, 429006, 429021, 430101, 430102, 430103, 430104,
430105, 430111, 430112, 430121, 430124, 430181, 430201, 430202, 430203, 430204, 430211, 430221,
430223, 430224, 430225, 430281, 430301, 430302, 430304, 430321, 430381, 430382, 430401, 430405,
430406, 430407, 430408, 430412, 430421, 430422, 430423, 430424, 430426, 430481, 430482, 430501,
430502, 430503, 430511, 430521, 430522, 430523, 430524, 430525, 430527, 430528, 430529, 430581,
430601, 430602, 430603, 430611, 430621, 430623, 430624, 430626, 430681, 430682, 430701, 430702,
430703, 430721, 430722, 430723, 430724, 430725, 430726, 430781, 430801, 430802, 430811, 430821,
430822, 430901, 430902, 430903, 430921, 430922, 430923, 430981, 431001, 431002, 431003, 431021,
431022, 431023, 431024, 431025, 431026, 431027, 431028, 431081, 431101, 431102, 431103, 431121,
431122, 431123, 431124, 431125, 431126, 431127, 431128, 431129, 431201, 431202, 431221, 431222,
431223, 431224, 431225, 431226, 431227, 431228, 431229, 431230, 431281, 431301, 431302, 431321,
431322, 431381, 431382, 433101, 433122, 433123, 433124, 433125, 433126, 433127, 433130, 440101,
440103, 440104, 440105, 440106, 440111, 440112, 440113, 440114, 440115, 440116, 440183, 440184,
440201, 440203, 440204, 440205, 440222, 440224, 440229, 440232, 440233, 440281, 440282, 440301,
440303, 440304, 440305, 440306, 440307, 440308, 440401, 440402, 440403, 440404, 440501, 440507,
440511, 440512, 440513, 440514, 440515, 440523, 440601, 440604, 440605, 440606, 440607, 440608,
440701, 440703, 440704, 440705, 440781, 440783, 440784, 440785, 440801, 440802, 440803, 440804,
440811, 440823, 440825, 440881, 440882, 440883, 440901, 440902, 440903, 440923, 440981, 440982,
440983, 441201, 441202, 441203, 441223, 441224, 441225, 441226, 441283, 441284, 441301, 441302,
441303, 441322, 441323, 441324, 441401, 441402, 441421, 441422, 441423, 441424, 441426, 441427,
441481, 441501, 441502, 441521, 441523, 441581, 441601, 441602, 441621, 441622, 441623, 441624,
441625, 441701, 441702, 441721, 441723, 441781, 441801, 441802, 441821, 441823, 441825, 441826,
441827, 441881, 441882, 445101, 445102, 445121, 445122, 445201, 445202, 445221, 445222, 445224,
445281, 445301, 445302, 445321, 445322, 445323, 445381, 450101, 450102, 450103, 450105, 450107,
450108, 450109, 450122, 450123, 450124, 450125, 450126, 450127, 450201, 450202, 450203, 450204,
450205, 450221, 450222, 450223, 450224, 450225, 450226, 450301, 450302, 450303, 450304, 450305,
450311, 450321, 450322, 450323, 450324, 450325, 450326, 450327, 450328, 450329, 450330, 450331,
450332, 450401, 450403, 450404, 450405, 450421, 450422, 450423, 450481, 450501, 450502, 450503,
450512, 450521, 450601, 450602, 450603, 450621, 450681, 450701, 450702, 450703, 450721, 450722,
450801, 450802, 450803, 450804, 450821, 450881, 450901, 450902, 450921, 450922, 450923, 450924,
450981, 451001, 451002, 451021, 451022, 451023, 451024, 451025, 451026, 451027, 451028, 451029,
451030, 451031, 451101, 451102, 451121, 451122, 451123, 451201, 451202, 451221, 451222, 451223,
451224, 451225, 451226, 451227, 451228, 451229, 451281, 451301, 451302, 451321, 451322, 451323,
451324, 451381, 451401, 451402, 451421, 451422, 451423, 451424, 451425, 451481, 460101, 460105,
460106, 460107, 460108, 460201, 460321, 460322, 460323, 469001, 469002, 469003, 469005, 469006,
469007, 469021, 469022, 469023, 469024, 469025, 469026, 469027, 469028, 469029, 469030, 500101,
500102, 500103, 500104, 500105, 500106, 500107, 500108, 500109, 500110, 500111, 500112, 500113,
500114, 500115, 500116, 500117, 500118, 500119, 500223, 500224, 500226, 500227, 500228, 500229,
500230, 500231, 500232, 500233, 500234, 500235, 500236, 500237, 500238, 500240, 500241, 500242,
500243, 510101, 510104, 510105, 510106, 510107, 510108, 510112, 510113, 510114, 510115, 510121,
510122, 510124, 510129, 510131, 510132, 510181, 510182, 510183, 510184, 510301, 510302, 510303,
510304, 510311, 510321, 510322, 510401, 510402, 510403, 510411, 510421, 510422, 510501, 510502,
510503, 510504, 510521, 510522, 510524, 510525, 510601, 510603, 510623, 510626, 510681, 510682,
510683, 510701, 510703, 510704, 510722, 510723, 510724, 510725, 510726, 510727, 510781, 510801,
510802, 510811, 510812, 510821, 510822, 510823, 510824, 510901, 510903, 510904, 510921, 510922,
510923, 511001, 511002, 511011, 511024, 511025, 511028, 511101, 511102, 511111, 511112, 511113,
511123, 511124, 511126, 511129, 511132, 511133, 511181, 511301, 511302, 511303, 511304, 511321,
511322, 511323, 511324, 511325, 511381, 511401, 511402, 511421, 511422, 511423, 511424, 511425,
511501, 511502, 511503, 511521, 511523, 511524, 511525, 511526, 511527, 511528, 511529, 511601,
511602, 511621, 511622, 511623, 511681, 511701, 511702, 511721, 511722, 511723, 511724, 511725,
511781, 511801, 511802, 511803, 511822, 511823, 511824, 511825, 511826, 511827, 511901, 511902,
511921, 511922, 511923, 512001, 512002, 512021, 512022, 512081, 513221, 513222, 513223, 513224,
513225, 513226, 513227, 513228, 513229, 513230, 513231, 513232, 513233, 513321, 513322, 513323,
513324, 513325, 513326, 513327, 513328, 513329, 513330, 513331, 513332, 513333, 513334, 513335,
513336, 513337, 513338, 513401, 513422, 513423, 513424, 513425, 513426, 513427, 513428, 513429,
513430, 513431, 513432, 513433, 513434, 513435, 513436, 513437, 520101, 520102, 520103, 520111,
520112, 520113, 520114, 520121, 520122, 520123, 520181, 520201, 520203, 520221, 520222, 520301,
520302, 520303, 520321, 520322, 520323, 520324, 520325, 520326, 520327, 520328, 520329, 520330,
520381, 520382, 520401, 520402, 520421, 520422, 520423, 520424, 520425, 520502, 520521, 520522,
520523, 520524, 520525, 520526, 520527, 520602, 520603, 520621, 520622, 520623, 520624, 520625,
520626, 520627, 520628, 522301, 522322, 522323, 522324, 522325, 522326, 522327, 522328, 522601,
522622, 522623, 522624, 522625, 522626, 522627, 522628, 522629, 522630, 522631, 522632, 522633,
522634, 522635, 522636, 522701, 522702, 522722, 522723, 522725, 522726, 522727, 522728, 522729,
522730, 522731, 522732, 530101, 530102, 530103, 530111, 530112, 530113, 530114, 530122, 530124,
530125, 530126, 530127, 530128, 530129, 530181, 530301, 530302, 530321, 530322, 530323, 530324,
530325, 530326, 530328, 530381, 530402, 530421, 530422, 530423, 530424, 530425, 530426, 530427,
530428, 530501, 530502, 530521, 530522, 530523, 530524, 530601, 530602, 530621, 530622, 530623,
530624, 530625, 530626, 530627, 530628, 530629, 530630, 530701, 530702, 530721, 530722, 530723,
530724, 530801, 530802, 530821, 530822, 530823, 530824, 530825, 530826, 530827, 530828, 530829,
530901, 530902, 530921, 530922, 530923, 530924, 530925, 530926, 530927, 532301, 532322, 532323,
532324, 532325, 532326, 532327, 532328, 532329, 532331, 532501, 532502, 532503, 532523, 532524,
532525, 532526, 532527, 532528, 532529, 532530, 532531, 532532, 532601, 532622, 532623, 532624,
532625, 532626, 532627, 532628, 532801, 532822, 532823, 532901, 532922, 532923, 532924, 532925,
532926, 532927, 532928, 532929, 532930, 532931, 532932, 533102, 533103, 533122, 533123, 533124,
533321, 533323, 533324, 533325, 533421, 533422, 533423, 540101, 540102, 540121, 540122, 540123,
540124, 540125, 540126, 540127, 542121, 542122, 542123, 542124, 542125, 542126, 542127, 542128,
542129, 542132, 542133, 542221, 542222, 542223, 542224, 542225, 542226, 542227, 542228, 542229,
542231, 542232, 542233, 542301, 542322, 542323, 542324, 542325, 542326, 542327, 542328, 542329,
542330, 542331, 542332, 542333, 542334, 542335, 542336, 542337, 542338, 542421, 542422, 542423,
542424, 542425, 542426, 542427, 542428, 542429, 542430, 542521, 542522, 542523, 542524, 542525,
542526, 542527, 542621, 542622, 542623, 542624, 542625, 542626, 542627, 610101, 610102, 610103,
610104, 610111, 610112, 610113, 610114, 610115, 610116, 610122, 610124, 610125, 610126, 610201,
610202, 610203, 610204, 610222, 610301, 610302, 610303, 610304, 610322, 610323, 610324, 610326,
610327, 610328, 610329, 610330, 610331, 610401, 610402, 610403, 610404, 610422, 610423, 610424,
610425, 610426, 610427, 610428, 610429, 610430, 610431, 610481, 610501, 610502, 610521, 610522,
610523, 610524, 610525, 610526, 610527, 610528, 610581, 610582, 610601, 610602, 610621, 610622,
610623, 610624, 610625, 610626, 610627, 610628, 610629, 610630, 610631, 610632, 610701, 610702,
610721, 610722, 610723, 610724, 610725, 610726, 610727, 610728, 610729, 610730, 610801, 610802,
610821, 610822, 610823, 610824, 610825, 610826, 610827, 610828, 610829, 610830, 610831, 610901,
610902, 610921, 610922, 610923, 610924, 610925, 610926, 610927, 610928, 610929, 611001, 611002,
611021, 611022, 611023, 611024, 611025, 611026, 620101, 620102, 620103, 620104, 620105, 620111,
620121, 620122, 620123, 620201, 620301, 620302, 620321, 620401, 620402, 620403, 620421, 620422,
620423, 620501, 620502, 620503, 620521, 620522, 620523, 620524, 620525, 620601, 620602, 620621,
620622, 620623, 620701, 620702, 620721, 620722, 620723, 620724, 620725, 620801, 620802, 620821,
620822, 620823, 620824, 620825, 620826, 620901, 620902, 620921, 620922, 620923, 620924, 620981,
620982, 621001, 621002, 621021, 621022, 621023, 621024, 621025, 621026, 621027, 621101, 621102,
621121, 621122, 621123, 621124, 621125, 621126, 621201, 621202, 621221, 621222, 621223, 621224,
621225, 621226, 621227, 621228, 622901, 622921, 622922, 622923, 622924, 622925, 622926, 622927,
623001, 623021, 623022, 623023, 623024, 623025, 623026, 623027, 630101, 630102, 630103, 630104,
630105, 630121, 630122, 630123, 632121, 632122, 632123, 632126, 632127, 632128, 632221, 632222,
632223, 632224, 632321, 632322, 632323, 632324, 632521, 632522, 632523, 632524, 632525, 632621,
632622, 632623, 632624, 632625, 632626, 632721, 632722, 632723, 632724, 632725, 632726, 632801,
632802, 632821, 632822, 632823, 640101, 640104, 640105, 640106, 640121, 640122, 640181, 640201,
640202, 640205, 640221, 640301, 640302, 640303, 640323, 640324, 640381, 640401, 640402, 640422,
640423, 640424, 640425, 640501, 640502, 640521, 640522, 650101, 650102, 650103, 650104, 650105,
650106, 650107, 650109, 650121, 650201, 650202, 650203, 650204, 650205, 652101, 652122, 652123,
652201, 652222, 652223, 652301, 652302, 652323, 652324, 652325, 652327, 652328, 652701, 652722,
652723, 652801, 652822, 652823, 652824, 652825, 652826, 652827, 652828, 652829, 652901, 652922,
652923, 652924, 652925, 652926, 652927, 652928, 652929, 653001, 653022, 653023, 653024, 653101,
653121, 653122, 653123, 653124, 653125, 653126, 653127, 653128, 653129, 653130, 653131, 653201,
653221, 653222, 653223, 653224, 653225, 653226, 653227, 654002, 654003, 654021, 654022, 654023,
654024, 654025, 654026, 654027, 654028, 654201, 654202, 654221, 654223, 654224, 654225, 654226,
654301, 654321, 654322, 654323, 654324, 654325, 654326, 659001, 659002, 659003, 659004);

$seed = mt_rand(0, 3130);//total of region code
$Birth = mt_rand($Year_start, $Year_end);
$Birth_format = date('Ymd', $Birth);
$suffix_a = mt_rand(0, 9);
$suffix_b = mt_rand(0, 9);
$suffix_c = mt_rand(0, 9);//male or female
if (!$base or mb_strlen($base) <> 6)
$base = $Region[$seed] . $Birth_format . $suffix_a . $suffix_b . $suffix_c;

$factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
$sums = 0;
$suffix_d = '';
for ($i = 0; $i < 17; $i++) {
$sums += substr($base, $i, 1) * $factor[$i];
}

$mods = $sums % 11;//10X98765432

switch ($mods) {
case 0:
$suffix_d = '1';
break;
case 1:
$suffix_d = '0';
break;
case 2:
$suffix_d = 'x';
break;
case 3:
$suffix_d = '9';
break;
case 4:
$suffix_d = '8';
break;
case 5:
$suffix_d = '7';
break;
case 6:
$suffix_d = '6';
break;
case 7:
$suffix_d = '5';
break;
case 8:
$suffix_d = '4';
break;
case 9:
$suffix_d = '3';
break;
case 10:
$suffix_d = '2';
break;
}

$content .= $base . $suffix_d;

return $content;
}

判断身份证号格式是否正确

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
/**
* 判断身份证号是否正确
* @param string $id
* @return boolean
**/
function is_idcard($id)
{
$id = strtoupper($id);
$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
$arr_split = array();
if (!preg_match($regx, $id)) {
return false;
}
if (15 == strlen($id)) //检查15位
{
$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";

@preg_match($regx, $id, $arr_split);
//检查生日日期是否正确
$dtm_birth = "19" . $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
if (!strtotime($dtm_birth)) {
return false;
} else {
return false;
}
} else //检查18位
{
$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
@preg_match($regx, $id, $arr_split);
$dtm_birth = $arr_split[2] . '/' . $arr_split[3] . '/' . $arr_split[4];
if (!strtotime($dtm_birth)) //检查生日日期是否正确
{
return false;
} else {
//检验18位身份证的校验码是否正确。
//校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
$arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
$arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
$sign = 0;
for ($i = 0; $i < 17; $i++) {
$b = (int)$id{$i};
$w = $arr_int[$i];
$sign += $b * $w;
}
$n = $sign % 11;
$val_num = $arr_ch[$n];
if ($val_num != substr($id, 17, 1)) {
return false;
}
else {
return true;
}
}
}
}

生成随机手机号

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

/**
* 生成随机手机号
*
* @return mixed|string
*/
function create_mobile()
{
// 中国移动前缀
$mobile_prefixes = [
1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 135, 136, 137, 138, 139,
147, 150, 151, 152, 157, 158, 159, 172, 178, 182, 183, 184, 187, 188, 198
];
// 中国联通前缀
$unicom_prefixes = [130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186];
// 中国电信前缀
$telecom_prefixes = [133, 149, 153, 173, 177, 180, 181, 189, 199];
// 所有前缀
$all_prefixes = $mobile_prefixes + $unicom_prefixes + $telecom_prefixes;

$mobile = $all_prefixes[array_rand($all_prefixes)];

while (strlen($mobile) < 11) {
$mobile .= mt_rand(0, 9);
}

return $mobile;
}

判断手机号是否正确

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php

/**
* @param $mobile
* @return false|int
*
* 移动号段:134(0-8)、135、136、137、138、139、147、150、151、152、157、158、159、172、178、182、183、184、187、188、198
* 联通号段:130、131、132、145、155、156、166、171、175、176、185、186
* 电信号段:133、149、153、173、177、180、181、189、199
* 虚拟运营商
* 电信:1700、1701、1702
* 移动:1703、1705、1706
* 联通:1704、1707、1708、1709、171
* 卫星通信:1349
*/
function is_mobile($mobile)
{
return preg_match('/^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8]))\d{8}$/', $mobile);
}

微信头像合并

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php 

/**
* 微信头像合并
* @param array $pic_list
* @param string $save_dir
* @return string
*/
function image_merge($pic_list,$save_dir)
{
$pic_list = array_slice($pic_list, 0, 9); // 只操作前9个图片

$bg_w = 150; // 背景图片宽度
$bg_h = 150; // 背景图片高度
$background = imagecreatetruecolor($bg_w, $bg_h); // 背景图片
$color = imagecolorallocate($background, 202, 201, 201); // 为真彩色画布创建白色背景,再设置为透明
imagefill($background, 0, 0, $color);
imageColorTransparent($background, $color);

$pic_count = count($pic_list);
$lineArr = array(); // 需要换行的位置
$space_x = 3;
$space_y = 3;
$line_x = 0;
$start_x = 0;
$start_y = 0;
$pic_w = 0;
$pic_h = 0;
switch ($pic_count) {
case 1: // 正中间
$start_x = intval($bg_w / 4); // 开始位置X
$start_y = intval($bg_h / 4); // 开始位置Y
$pic_w = intval($bg_w / 2); // 宽度
$pic_h = intval($bg_h / 2); // 高度
break;
case 2: // 中间位置并排
$start_x = 2;
$start_y = intval($bg_h / 4) + 3;
$pic_w = intval($bg_w / 2) - 5;
$pic_h = intval($bg_h / 2) - 5;
$space_x = 5;
break;
case 3:
$start_x = 40; // 开始位置X
$start_y = 5; // 开始位置Y
$pic_w = intval($bg_w / 2) - 5; // 宽度
$pic_h = intval($bg_h / 2) - 5; // 高度
$lineArr = array(2);
$line_x = 4;
break;
case 4:
$start_x = 4; // 开始位置X
$start_y = 5; // 开始位置Y
$pic_w = intval($bg_w / 2) - 5; // 宽度
$pic_h = intval($bg_h / 2) - 5; // 高度
$lineArr = array(3);
$line_x = 4;
break;
case 5:
$start_x = 30; // 开始位置X
$start_y = 30; // 开始位置Y
$pic_w = intval($bg_w / 3) - 5; // 宽度
$pic_h = intval($bg_h / 3) - 5; // 高度
$lineArr = array(3);
$line_x = 5;
break;
case 6:
$start_x = 5; // 开始位置X
$start_y = 30; // 开始位置Y
$pic_w = intval($bg_w / 3) - 5; // 宽度
$pic_h = intval($bg_h / 3) - 5; // 高度
$lineArr = array(4);
$line_x = 5;
break;
case 7:
$start_x = 53; // 开始位置X
$start_y = 5; // 开始位置Y
$pic_w = intval($bg_w / 3) - 5; // 宽度
$pic_h = intval($bg_h / 3) - 5; // 高度
$lineArr = array(2, 5);
$line_x = 5;
break;
case 8:
$start_x = 30; // 开始位置X
$start_y = 5; // 开始位置Y
$pic_w = intval($bg_w / 3) - 5; // 宽度
$pic_h = intval($bg_h / 3) - 5; // 高度
$lineArr = array(3, 6);
$line_x = 5;
break;
case 9:
$start_x = 5; // 开始位置X
$start_y = 5; // 开始位置Y
$pic_w = intval($bg_w / 3) - 5; // 宽度
$pic_h = intval($bg_h / 3) - 5; // 高度
$lineArr = array(4, 7);
$line_x = 5;
break;
}
foreach ($pic_list as $k => $pic_path) {
$kk = $k + 1;
if (in_array($kk, $lineArr)) {
$start_x = $line_x;
$start_y = $start_y + $pic_h + $space_y;
}

/** @var string $image */
$image = file_get_contents($pic_path);
$resource = imagecreatefromstring($image);
// $start_x,$start_y copy图片在背景中的位置
// 0,0 被copy图片的位置
// $pic_w,$pic_h copy后的高度和宽度,最后两个参数为原始图片宽度和高度,倒数两个参数为copy时的图片宽度和高度
imagecopyresized($background, $resource, $start_x, $start_y, 0, 0, $pic_w, $pic_h, imagesx($resource), imagesy($resource));
$start_x = $start_x + $pic_w + $space_x;
}

$filename = md5(uniqid()).'.png';
$filepath = $save_dir.$filename;

//header("Content-type: image/jpg");
imagegif($background, $filepath);
return $filepath;
}
作者

Chenmobuys

发布于

2019-01-23

更新于

2020-10-14

许可协议