Subversion Repositories php-qbpwcf

Rev

Rev 350 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
239 liveuser 6
    Copyright (C) 2014~2026 MIN ZHI, CHEN
3 liveuser 7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
跟函式參數檢查相關的類別.
29
備註:
30
無.
31
*/
32
class variableCheck{
33
 
34
	#給予 $setErrorHandler 函式使用的 conf
35
	public static $setErrorHandlerConf=array();
36
 
37
	/*
38
	#函式說明:
39
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
40
	#回傳結果:
41
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
42
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
43
	#$result["function"],當前執行的函式名稱.
44
	#必填參數:
45
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
46
	#$arguments,陣列,為呼叫方法時所用的參數.
47
	#可省略參數:
48
	#無.
49
	#參考資料:
50
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
51
	#備註:
52
	#無.
53
	*/
54
	public function __call($method,$arguments){
55
 
56
		#取得當前執行的函式
57
		$result["function"]=__FUNCTION__;
58
 
59
		#設置執行不正常
60
		$result["status"]="false";
61
 
62
		#設置執行錯誤
63
		$result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";
64
 
65
		#設置所丟入的參數
66
		$result["error"][]=$arguments;
67
 
68
		#回傳結果
69
		return $result;
70
 
71
		}#function __call end
72
 
73
	/*
74
	#函式說明:
75
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
76
	#回傳結果:
77
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
78
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
79
	#$result["function"],當前執行的函式名稱.
80
	#必填參數:
81
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
82
	#$arguments,陣列,為呼叫方法時所用的參數.
83
	#可省略資料:
84
	#無.
85
	#參考資料:
86
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
87
	#備註:
88
	#無.
89
	*/
90
	public static function __callStatic($method,$arguments){
91
 
92
		#取得當前執行的函式
93
		$result["function"]=__FUNCTION__;
94
 
95
		#設置執行不正常
96
		$result["status"]="false";
97
 
98
		#設置執行錯誤
99
		$result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";
100
 
101
		#設置所丟入的參數
102
		$result["error"][]=$arguments;
103
 
104
		#回傳結果
105
		return $result;
106
 
107
		}#function __callStatic end
226 liveuser 108
 
3 liveuser 109
	/*
110
	#函式說明:
111
	#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
112
	#回傳結果:
113
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
114
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
115
	#$result["function"],當前執行的函式名稱.
116
	#$result["argu"],設置給予的參數.
117
	#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
118
	#$result["warning"],警告訊息
119
	#$result["content"][$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
120
	#$result["content"][$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
121
	#$result["content"][$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
122
	#必填參數:
123
	$conf["varInput"],陣列,要檢查的陣列變數
124
	$conf["varInput"]=array();
125
	$conf["variableCheck"],陣列,要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
126
	$conf["variableCheck"]=array();
127
	#可省略參數:
128
	#$conf["variableType"],字串陣列,要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); ,null/any代表沒有指定變數形態.若為"resource"則包含"resource (closed)".
129
	#$conf["variableType"]=array();#
130
	#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置.
131
	#$conf["canBeEmpty"],陣列,可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"false"時生效.
132
	#$conf["canBeEmpty"]=array();
133
	#$conf["canNotBeEmpty"],陣列,不可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"true"時生效.
134
	#$conf["canNotBeEmpty"]=array();
135
	#參考資料:
136
	#無.
137
	#備註:
138
	#無.
139
	*/
140
	public static function isexistMulti(&$conf){
141
 
142
		#初始化要回傳的內容
143
		$result=array();
144
 
145
		#取得當前執行的函式
146
		$result["function"]=__FUNCTION__;
147
 
148
		#如果 $conf 不為陣列
149
		if(gettype($conf)!="array"){
150
 
151
			#設置執行失敗
152
			$result["status"]="false";
153
 
154
			#設置執行錯誤訊息
155
			$result["error"][]="\$conf變數須為陣列形態";
156
 
157
			#如果傳入的參數為 null
158
			if($conf==null){
159
 
160
				#設置執行錯誤訊息
161
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
162
 
163
				}#if end
164
 
165
			#回傳結果
166
			return $result;
167
 
168
			}#if end
169
 
170
		#取得所使用的參數
171
		$result["argu"]=$conf;
172
 
173
		#如果 $conf["varInput"] 沒有設定
174
		if(!isset($conf["varInput"])){
175
 
176
			#設置錯誤識別
177
			$result["status"]="false";
178
 
179
			#設置錯誤訊息
180
			$resutl["error"][]="\$conf[\"varInput\"]未設置";
181
 
182
			#回傳結果
183
			return $result;
184
 
185
			}#if end
186
 
187
		#反之代表 $conf["varInput"] 有設定
188
		else{
189
 
190
			#如果 gettype($conf["varInput"]) 不等於 "array"
191
			if(gettype($conf["varInput"])!=="array"){
192
 
193
				#echo "須為陣列";
194
 
195
				#設置錯誤識別
196
				$result["status"]="false";
197
 
198
				#設置錯誤訊息
199
				$result["error"][]="\$conf[\"varInput\"]型態須為陣列";
200
 
201
				#回傳結果
202
				return $result;
203
 
204
				}#if end
205
 
206
			}#else end
207
 
208
		#如果 $conf["variableCheck"] 沒有設定
209
		if(!isset($conf["variableCheck"])){
210
 
211
			#設置錯誤識別
212
			$result["status"]="false";
213
 
214
			#設置錯誤訊息
215
			$resutl["error"][]="\$conf[\"variableCheck\"]未設置";
216
 
217
			#回傳結果
218
			return $result;
219
 
220
			}#if end
221
 
222
		#如果可為空值的變數不存在
223
		if(!isset($conf["canBeEmptyString"])){
224
 
225
			#預設為 "true"
226
			$conf["canBeEmptyString"]="true";
227
 
228
			}#if end
229
 
230
		#如果未設置 $conf["canBeEmpty"]
231
		if(!isset($conf["canBeEmpty"])){
232
 
233
			#設置為空陣列
234
			$conf["canBeEmpty"]=array();
235
 
236
			}#if end
237
 
238
		#如果未設置 $conf["canNotBeEmpty"]
239
		if(!isset($conf["canNotBeEmpty"])){
240
 
241
			#設置為空陣列
242
			$conf["canNotBeEmpty"]=array();
243
 
244
			}#if end
245
 
246
		#反之 $conf["variableCheck"] 有設定
247
		else{
248
 
249
			#如果 gettype($conf["variableCheck"]) 不等於 "array"
250
			if(gettype($conf["variableCheck"])!="array"){
251
 
252
				#設置錯誤識別
253
				$result["status"]="false";
254
 
255
				#設置錯誤訊息
256
				$resutl["error"][]="\$conf[\"variableCheck\"]型態須為陣列";
257
 
258
				#回傳結果
259
				return $result;
260
 
261
				}#if end
262
 
263
			}#else end
264
 
265
		#初始化目前要檢查的變數型態計數
266
		$typeCount=-1;
267
 
268
		#針對每個要檢查的變數名稱
269
		foreach($conf["variableCheck"] as $shouldBtCheckedVarName){
270
 
271
			#目前要檢查的變數型態計數+1
272
			$typeCount++;
273
 
274
			#如果有輸入的參數
275
			if(isset($conf["varInput"])){
276
 
277
				#如果 $conf["varInput"] 裡面有元素
278
				if(count($conf["varInput"])!=0){
279
 
280
					#var_dump($conf["varInput"]);
281
 
282
					#針對每個已經放入的參數
283
					foreach($conf["varInput"] as $varInputKey=>$varInputValue){
284
 
285
						#函式說明:
286
						#檢查一個數值是否與陣列裏面的元素相同,找到一個相符合的元素後就會停止搜尋.
287
						#回傳結果:
288
						#$result["status"],"true"表示執行正確,"false"表示執行錯誤.
289
						#$result["founded"],"true"表示有找到相同的,"false"表示沒有找到相同的.
290
						#$result["error"],錯誤訊息
291
						#$result["function"],當前執行的函數名稱
292
						#$result["equalVarName"],相等的變數名稱或key.
293
						#$result["equalVarValue"],相等的變數數值內容.
294
						#必填參數:
295
						$conf["search"]["getEqualVar"]["conditionElement"]=$shouldBtCheckedVarName;#條件元素,要等於的元素內容。
296
						$conf["search"]["getEqualVar"]["compareElements"]=array($varInputKey);#要比對的陣列變數內容。
297
						$temp=search::getEqualVar($conf["search"]["getEqualVar"]);
298
						unset($conf["search"]["getEqualVar"]);
299
 
300
						#如果 search::getEqualVar 執行失敗
301
						if($temp["status"]=="false"){
302
 
303
							#設置執行不正常
304
							$result["status"]="false";
305
 
306
							#設置錯誤訊息陣列
307
							$result["error"]=$temp;
308
 
309
							#回傳結果
310
							return $result;
311
 
312
							}#if end
313
 
314
						#如果 search::getEqualVar 找不到必填的參數
315
						if($temp["founded"]=="false"){
316
 
317
							#則儲存其結果
318
							$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
319
 
320
							#儲存給予的參數
321
							$result["content"][$shouldBtCheckedVarName]["argu"]=$temp["argv"];
322
 
323
							}#if end
324
 
325
						#反之有找到必填的參數
326
						else{
327
 
328
							#如果$conf["canBeEmptyString"]為"false"
329
							#代表變數內容不能為空字串
330
							if($conf["canBeEmptyString"]=="false"){
331
 
332
								#如果該參數不在可例外為空字串或集合的陣列裡面
333
								if(!(in_array($varInputKey,$conf["canBeEmpty"]))){
334
 
335
									#變數要有存在才行
336
									if(isset($varInputValue)){
337
 
338
										#則檢查變數內容是否為空字串
339
										if($varInputValue===""){
340
 
341
											#則儲存其結果
342
											$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
343
 
344
											#設置警告訊息訊息
345
											$result["error"][]="變數「".$shouldBtCheckedVarName."」不得為空字串";
346
 
347
											#將其設為 "false"
348
											$result["passed"]="false";
349
 
350
											#換找下一個變數是否存在
351
											break;
352
 
353
											}#if end
354
 
355
										#初始化計數為0
356
										$countOFvarInputValue=false;
357
 
358
										#如果是陣列
359
										if(gettype($varInputValue)==="array"){
360
 
361
											#計數
362
											$countOFvarInputValue=count($varInputValue);
363
 
364
											}#if end
365
 
366
										#則檢查變數內容是否為空陣列
367
										if($countOFvarInputValue===0){
368
 
369
											#則儲存其結果
370
											$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
371
 
372
											#設置警告訊息訊息
373
											$result["error"][]="變數「".$shouldBtCheckedVarName."」不得為空陣列";
374
 
375
											#將其設為 "false"
376
											$result["passed"]="false";
377
 
378
											#換找下一個變數是否存在
379
											break;
380
 
381
											}#if end
382
 
383
										}#if end
384
 
385
									}#if end
386
 
387
								}#if end
388
 
389
							#反之 $conf["canBeEmptyString"]為"true"
390
							#代表變數內容可為空字串
391
							else if($conf["canBeEmptyString"]==="true"){
392
 
393
								#如果該參數不在可例外不為空字串或集合
394
								if((in_array($varInputKey,$conf["canNotBeEmpty"]))){
395
 
396
									#則檢查變數內容是否為空字串
397
									#或是空集合
398
									if($varInputValue===""){
399
 
400
										#則儲存其結果
401
										$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
402
 
403
										#設置警告訊息訊息
404
										$result["error"][]="變數「".$shouldBtCheckedVarName."」不得為空字串";
405
 
406
										#將其設為 "false"
407
										$result["passed"]="false";
408
 
409
										#換找下一個變數是否存在
410
										break;
411
 
412
										}#if end
413
 
414
									#反之如果可以計數
415
									else if(is_array($varInputValue)){
416
 
417
										#或是空集合
418
										if(count($varInputValue)==0){
419
 
420
											#則儲存其結果
421
											$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
422
 
423
											#設置警告訊息訊息
424
											$result["error"][]="變數「".$shouldBtCheckedVarName."」不得為空陣列";
425
 
426
											#將其設為 "false"
427
											$result["passed"]="false";
428
 
429
											#換找下一個變數是否存在
430
											break;
431
 
432
											}#if end
433
 
434
										}#else end
435
 
436
									}#if end
437
 
438
								}#if end
439
 
440
							#則儲存其結果
441
							$result["content"][$shouldBtCheckedVarName]["varExist"]="true";
442
 
443
							#如果有設定$conf["variableType"]
444
							if(isset($conf["variableType"])){
445
 
323 liveuser 446
								#如果該變數的型態正確 或是要求的形態為null 或為 "any"
447
								if($conf["variableType"][$typeCount]===gettype($varInputValue) || $conf["variableType"][$typeCount]===null || $conf["variableType"][$typeCount]==="any"){
226 liveuser 448
 
3 liveuser 449
									#則給予型態認證通過的識別
450
									$result["content"][$shouldBtCheckedVarName]["varType"]="true";
451
 
452
									}#if end
326 liveuser 453
 
454
								#反之如果該變數的形態跟要求的一樣都為 "resource"
455
								else if( 
456
 
457
										#如果為一種 resource
458
										( $conf["variableType"][$typeCount]==="resource" && is_resource($varInputValue) )
459
 
460
										||
461
 
462
										#如果為已經關閉的 resource 則會顯示成 resource (closed), is_resource 會回 false, 但用 gettype會得到 前面有 resource 的字樣
463
										( $conf["variableType"][$typeCount]==="resource" && strpos(gettype($varInputValue),"resource")===0 )
464
 
465
									){
466
 
467
									#從  php-8.4 開始 gettype($resource) 會得到 resource(status) 的結果,因此需要特別處理.
468
 
469
									#則給予型態認證通過的識別
470
									$result["content"][$shouldBtCheckedVarName]["varType"]="true";
471
 
472
									}#if end
3 liveuser 473
 
474
								#反之形態不正確
475
								else{
476
 
477
									#則給予型態認不證通過的識別
478
									$result["content"][$shouldBtCheckedVarName]["varType"]="false";
479
 
480
									/*
481
									#debug
482
									var_dump($varInputValue);
483
									echo "實際是=>".gettype($varInputValue);
484
									echo "規定要=>".$conf["variableType"][$typeCount];
485
									var_dump($typeCount);
486
									*/
487
 
488
									#設置錯誤的形態
489
									$result["content"][$shouldBtCheckedVarName]["wrongType"]=gettype($varInputValue);
490
 
491
									#設置正確的形態
492
									$result["content"][$shouldBtCheckedVarName]["rightType"]=$conf["variableType"][$typeCount];
493
 
494
									#設置錯誤形態的數值內容
495
									$result["content"][$shouldBtCheckedVarName]["value"]=$varInputValue;
496
 
497
									}#else end
498
 
499
								}#if end
500
 
501
							#換找下一個變數是否存在
502
							break;
503
 
504
							}#else end
505
 
506
						}#foreach end
507
 
508
					}#if end
509
 
510
				#反之 $conf["varInput"] 裡面沒有元素
511
				else{
512
 
513
					#設置該變數不存在
514
					$result["content"][$shouldBtCheckedVarName]["varExist"]="false";
515
 
516
					#設置該變數形態不對
517
					$result["content"][$shouldBtCheckedVarName]["varType"]="false";
518
 
519
					}#else end
520
 
521
				}#if end
522
 
523
			}#foreach end
524
 
525
		#如果有要檢查的變數
526
		if(isset($result["content"])){
527
 
528
			#檢查是否每個要檢查的變數都存在且形態皆正確
529
			foreach($result["content"] as $name => $statusArray){
530
 
531
				#檢查是否存在與形態是否正確的識別
532
				foreach($statusArray as $status){
533
 
534
					#如果有個變數的檢查是否通過識別為 "false"
535
					if($status=="false"){
536
 
537
						#將其設為 "false"
538
						$result["passed"]="false";
539
 
540
						}#if end
541
 
542
					}#foreach end
543
 
544
				}#foreach end
226 liveuser 545
 
3 liveuser 546
			}#if end
547
 
548
		#如果 $result["passed"] 沒有設置
549
		if(!isset($result["passed"])){
550
 
551
			#將其設為 true
552
			$result["passed"]="true";
553
 
554
			}#if end
555
 
556
		#執行到這邊代表執行正常
557
		$result["status"]="true";
558
 
559
		#回傳陣列結果
560
		return $result;
561
 
562
		}#function isexistMulti end
563
 
564
	/*
565
	#函式說明:
566
	#檢查變數的形態是否正確
567
	#回傳結果:
568
	#$result["status"],執行是否正常
569
	#$result["error"].錯誤訊息陣列
570
	#$result["passed"],若爲"true"則表示形態正確,"false"為形態有誤.
571
	#$result["function"],當前執行的函數名稱.
572
	#必填參數:
573
	#$conf["vName"],字串,要檢查的變數.
574
	$conf["vName"]="";
575
	#$conf["vType"],字串,變數的形態,若為"any"則代表不檢查型態,若為"resource",則也允許"resource (closed)".
576
	$conf["vType"]="";
577
	#可省略參數:
578
	#無.
579
	#參考資料:
580
	#無.
581
	#備註:
582
	#無.
583
	*/
584
	public static function checkType(&$conf){
585
 
586
		#初始化要回傳的變數
587
		$result=array();
588
 
589
		#取得當前執行的函數名稱
590
		$result["function"]=__FUNCTION__;
591
 
592
		#如果 $conf 不為陣列
593
		if(gettype($conf)!="array"){
594
 
595
			#設置執行失敗
596
			$result["status"]="false";
597
 
598
			#設置執行錯誤訊息
599
			$result["error"][]="\$conf變數須為陣列形態";
600
 
601
			#如果傳入的參數為 null
602
			if($conf==null){
603
 
604
				#設置執行錯誤訊息
605
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
606
 
607
				}#if end
608
 
609
			#回傳結果
610
			return $result;
611
 
612
			}#if end
613
 
614
		#如果 $conf["vName"] 變數不存在
615
		if(!isset($conf["vName"])){
616
 
617
			#設置執行錯誤
618
			$result["status"]="false";
619
 
620
			#設置錯誤訊息
621
			$result["error"][]="\$conf[\"vName\"]參數不存在";
622
 
623
			#回傳結果
624
			return $result;
625
 
626
			}#if end
627
 
628
		#如果 $conf["vType"] 變數不存在
629
		if(!isset($conf["vType"])){
630
 
631
			#設置執行錯誤
632
			$result["status"]="false";
633
 
634
			#設置錯誤訊息
635
			$result["error"][]="\$conf[\"vType\"]參數不存在";
636
 
637
			#回傳結果
638
			return $result;
639
 
640
			}#if end
641
 
642
		#如果是 resource
643
		if($conf["vType"]==="resource"){
226 liveuser 644
 
3 liveuser 645
			#如果不是開頭為 "resource"  的形態
646
			if(strpos(gettype($conf["vName"]),$conf["vType"])!==0){
226 liveuser 647
 
3 liveuser 648
				#設置執行正常
649
				$result["status"]="true";
650
 
651
				#設置檢查不通過
652
				$result["passed"]="false";
653
 
654
				#設置錯誤訊息
655
				$result["error"][]="變數\$conf[\"vName\"]的形態應為".$conf["vType"];
656
 
657
				#回傳結果
658
				return $result;
226 liveuser 659
 
3 liveuser 660
				}#if end
226 liveuser 661
 
3 liveuser 662
			}#if end
663
 
664
		#反之若其變數形態不爲 $conf["vType"] 且期望的變數型態不為 "any"
665
		else if(gettype($conf["vName"])!=$conf["vType"] && $conf["vType"]!=="any"){
666
 
667
			#設置執行正常
668
			$result["status"]="true";
669
 
670
			#設置檢查不通過
671
			$result["passed"]="false";
672
 
673
			#設置錯誤訊息
674
			$result["error"][]="變數\$conf[\"vName\"]的形態應為".$conf["vType"];
675
 
676
			#回傳結果
677
			return $result;
678
 
679
			}#if end
680
 
681
		#執行到這表代表執行正常
682
		$result["status"]="true";
683
 
684
		#執行到這邊代表形態檢查通過
685
		$result["passed"]="true";
686
 
687
		#回傳結果
688
		return $result;
689
 
690
		}#function checkType end
691
 
692
	/*
693
	#函式說明:
694
	#檢查一個陣列變數裏面含有指定key的元素共有個
695
	#回傳結果:
696
	#$result["status"],執行是否正常
697
	#$result["error"].錯誤訊息陣列
698
	#$result["function"],當前執行的函數名稱.
699
	#$result["content"],爲總共找到幾個不是空值的數量
700
	#必填參數:
701
	#$conf["conditionValue"],陣列,想要調查具有該名稱的陣列元素,須為陣列值.
702
	$conf["conditionValue"]=array();
703
	#$conf["inputArray"],陣列,想要檢查的陣列變數,須為陣列值.
704
	$conf["inputArray"]=array();
705
	#可省略參數:
706
	#無.
707
	#參考資料:
708
	#無.
709
	#備註:
710
	#無.
711
	*/
712
	public static function computeIsset(&$conf){
713
 
714
		#初始化要回傳的變數
715
		$result=array();
716
 
717
		#取得當前執行的函數名稱
718
		$result["function"]=__FUNCTION__;
719
 
720
		#如果 $conf 不為陣列
721
		if(gettype($conf)!="array"){
722
 
723
			#設置執行失敗
724
			$result["status"]="false";
725
 
726
			#設置執行錯誤訊息
727
			$result["error"][]="\$conf變數須為陣列形態";
728
 
729
			#如果傳入的參數為 null
730
			if($conf==null){
731
 
732
				#設置執行錯誤訊息
733
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
734
 
735
				}#if end
736
 
737
			#回傳結果
738
			return $result;
739
 
740
			}#if end
741
 
742
		#如果 $conf["conditionValue"] 變數不存在
743
		if(!isset($conf["conditionValue"])){
744
 
745
			#回傳錯誤訊息
746
			return "\$conf[\"conditionValue\"]參數不存在";
747
 
748
			}#if end
749
 
750
		#如果 $conf["inputArray"] 變數不存在
751
		if(!isset($conf["inputArray"])){
752
 
753
			#回傳錯誤訊息
754
			return "\$conf[\"inputArray\"]參數不存在";
755
 
756
			}#if end
757
 
758
		#設定預設的計數爲0
759
		$result["content"]=0;
760
 
761
		#看有幾個要尋找是否存在的變數,就執行幾次
762
		for($i=0;$i<count($conf["conditionValue"]);$i++){
763
 
764
			#檢查是否有該變數存在
765
			if(isset($conf["inputArray"][$conf["conditionValue"][$i]])){
766
 
767
				#若存在則計數+1
768
				$result["content"]++;
769
 
770
				}#if end
771
 
772
			}#for end
773
 
774
		#設置執行正常
775
		$result["status"]="true";
776
 
777
		#回傳結果
778
		return $result;
779
 
780
		}#function computeIsset end
781
 
782
	/*
783
	#函式說明:
784
	#檢查某個元素是否存在於該一維陣列變數裏面
785
	#回傳結果:
786
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
787
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
788
	#$result["function"],當前執行的函式名稱.
789
	#$result["founded"],"true",表示該元素已經存在於該一維陣列變數裏面,"false"表示該元素不存在於該一維陣列變數裏面	.
790
	#必填參數:
791
	#$conf["searchString"],字串,要搜尋的元素內容.
792
	$conf["searchString"]="";
793
	#$conf["searchArray"],字串陣列,要搜尋的陣列變數.
794
	$conf["searchArray"]=array();
795
	#可省略參數:
796
	#無.
797
	#參考資料:
798
	#無.
799
	#備註:
800
	#無.
801
	*/
802
	public static function checkElementExistFromAnArray(&$conf){
803
 
804
		#初始化要回傳的內容
805
		$result=array();
806
 
807
		#記錄當前執行的函數名稱
808
		$result["function"]=__FUNCTION__;
809
 
810
		#如果 $conf 不為陣列
811
		if(gettype($conf)!="array"){
812
 
813
			#設置執行失敗
814
			$result["status"]="false";
815
 
816
			#設置執行錯誤訊息
817
			$result["error"][]="\$conf變數須為陣列形態";
818
 
819
			#如果傳入的參數為 null
820
			if($conf==null){
821
 
822
				#設置執行錯誤訊息
823
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
824
 
825
				}#if end
826
 
827
			#回傳結果
828
			return $result;
829
 
830
			}#if end
831
 
832
		#檢查參數
833
		#函式說明:
834
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
835
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
836
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
837
		#$result["function"],當前執行的函式名稱.
838
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
839
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
840
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
841
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
842
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
843
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
844
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
845
		#必填參數:
846
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
847
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
848
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
849
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("searchString","searchArray");
850
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
851
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
852
		#$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
853
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
854
		#可省略參數:
855
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
856
		$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
857
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
858
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("firstLineVarName");
859
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
860
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
861
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
862
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
863
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
864
		#$conf["arrayCountEqualCheck"][]=array();
865
		#參考資料來源:
866
		#array_keys=>http://php.net/manual/en/function.array-keys.php
867
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
868
		unset($conf["variableCheck::checkArguments"]);
869
 
870
		#如果檢查參數失敗
871
		if($checkArguments["status"]=="false"){
872
 
873
			#設置執行失敗
874
			$result["status"]="false";
875
 
876
			#設置執行錯誤訊息
877
			$result["error"]=$checkArguments;
878
 
879
			#回傳結果
880
			return $result;
881
 
882
			}#if end
883
 
884
		#如果檢查不通過
885
		if($checkArguments["passed"]=="false"){
886
 
887
			#設置執行失敗
888
			$result["status"]="false";
889
 
890
			#設置執行錯誤訊息
891
			$result["error"]=$checkArguments;
892
 
893
			#回傳結果
894
			return $result;
895
 
896
			}#if end
897
 
898
		#檢查 $conf["searchString"] 是否存在於 $conf["searchArray"]
899
		$in_array=in_array($conf["searchString"],$conf["searchArray"]);
900
 
901
		#如果 $conf["searchString"] 存在於 $conf["searchArray"]
902
		if($in_array){
903
 
904
			#設置沒有找到元素
905
			$result["founded"]="true";
906
 
907
			}#if end
908
 
909
		#反之
910
		else{
911
 
912
			#設置沒有找到元素
913
			$result["founded"]="false";
914
 
915
			}#else end
916
 
917
		#設置執行正常
918
		$result["status"]="true";
919
 
920
		#回傳結果
921
		return $result;
922
 
923
		}#function checkElementExistFromAnArray end
924
 
925
	/*
926
	#函式說明:
927
	#判斷session變數 $_SESSION["key1"]["key2"]["key3"]... 是否存在,若存在則可以將其內容回傳,若目標session變數不存在則可以指定要回傳的內容,取得變數內容之後可以卸除其session變數.
928
	#回傳結果:
929
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
930
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
931
	#$result["function"],當前執行的函式名稱.
932
	#$result["content"],取得的session變數內容
933
	#必填參數:
934
	#$conf["sessionName"],陣列字串,要取得的session變數名稱,須爲陣列字串值。$conf["sessionName"][0]對應的是session變數的第1個key;$conf["sessionName"][1]對應的是session變數的第2個key;$conf["sessionName"][2]對應的是session變數的第3個key。
935
	$conf["sessionName"]=array();
936
	#可省略參數:
937
	#$conf["ifEmptyThenSet"],字串,如果目標session變數不存在,則指派爲什麼樣的數值給目標變數?預設爲"".
938
	#$conf["ifEmptyThenSet"]="";
939
	#$conf["unsetSessionVar"],字串,是否要在指派完變數之後將該sesssion變數卸除,其數值會變成NULL,若設爲"true",表示要卸除,預設為"false",表示不卸除.
940
	#$conf["unsetSessionVar"]="true";
941
	#參考資料:
942
	#無.
943
	#備註:
944
	#無.
945
	*/
946
	public static function assignSessionValueToVar(&$conf){
947
 
948
		#初始化要回傳的內容
949
		$result=array();
950
 
951
		#記錄當前執行的函數名稱
952
		$result["function"]=__FUNCTION__;
953
 
954
		#如果 $conf 不為陣列
955
		if(gettype($conf)!="array"){
956
 
957
			#設置執行失敗
958
			$result["status"]="false";
959
 
960
			#設置執行錯誤訊息
961
			$result["error"][]="\$conf變數須為陣列形態";
962
 
963
			#如果傳入的參數為 null
964
			if($conf==null){
965
 
966
				#設置執行錯誤訊息
967
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
968
 
969
				}#if end
970
 
971
			#回傳結果
972
			return $result;
973
 
974
			}#if end
975
 
976
		#檢查參數
977
		#函式說明:
978
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
979
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
980
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
981
		#$result["function"],當前執行的函式名稱.
982
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
983
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
984
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
985
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
986
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
987
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
988
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
989
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
990
		#必填參數:
991
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
992
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
993
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
994
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("sessionName");
995
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
996
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
997
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
998
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
999
		#可省略參數:
1000
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1001
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1002
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1003
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array();
1004
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1005
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ifEmptyThenSet","unsetSessionVar");
1006
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1007
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1008
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1009
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("","false");
1010
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1011
		#$conf["arrayCountEqualCheck"][]=array();
1012
		#參考資料來源:
1013
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1014
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1015
		unset($conf["variableCheck::checkArguments"]);
1016
 
1017
		#如果檢查失敗
1018
		if($checkArguments["status"]=="false"){
1019
 
1020
			#設置錯誤識別
1021
			$result["status"]="false";
1022
 
1023
			#設置錯誤訊息
1024
			$result["error"]=$checkArguments;
1025
 
1026
			#回傳結果
1027
			return $result;
1028
 
1029
			}#if end
1030
 
1031
		#如果檢查不通過
1032
		if($checkArguments["passed"]=="false"){
1033
 
1034
			#設置錯誤識別
1035
			$result["status"]="false";
1036
 
1037
			#設置錯誤訊息
1038
			$result["error"]=$checkArguments;
1039
 
1040
			#回傳結果
1041
			return $result;
1042
 
1043
			}#if end
1044
 
1045
		#指派一個沒有內容的變數
1046
		$tempVar=null;
1047
 
1048
		#依據 $conf["sessionName"] 的元素數量與內如來判斷特定的 session 變數是否存在.
1049
		for($i=0;$i<count($conf["sessionName"]);$i++){
1050
 
1051
			#如果是第一層
1052
			if($i==0){
1053
 
1054
				#如果 session 變數不存在
1055
				if(!isset($_SESSION[$conf["sessionName"][$i]])){
1056
 
1057
					#取得指定的內容
1058
					$result["content"]=$conf["ifEmptyThenSet"];
1059
 
1060
					#設置執行正常
1061
					$result["status"]="true";
1062
 
1063
					#回傳結果
1064
					return $result;
1065
 
1066
					}#if end
1067
 
1068
				#取得第一層 session 變數的參照
1069
				$tempVar=&$_SESSION[$conf["sessionName"][$i]];
1070
 
1071
				}#if end
1072
 
1073
			#反之
1074
			else{
1075
 
1076
				#如果 session 變數不存在
1077
				if(!isset($tempVar[$conf["sessionName"][$i]])){
1078
 
1079
					#取得指定的內容
1080
					$result["content"]=$conf["ifEmptyThenSet"];
1081
 
1082
					#設置執行正常
1083
					$result["status"]="true";
1084
 
1085
					#回傳結果
1086
					return $result;
1087
 
1088
					}#if end
1089
 
1090
				#取得 session 變數下一層key的參照
1091
				$tempVar=&$tempVar[$conf["sessionName"][$i]];
1092
 
1093
				}#else end
1094
 
1095
			}#for end
1096
 
1097
		#取得 session 變數的內容
1098
		$result["content"]=$tempVar;
1099
 
1100
		#如果 $conf["unsetSessionVar"] 為 "true"
1101
		if($conf["unsetSessionVar"]=="true"){
1102
 
1103
			#透過指定 session 變數為 NULL 來卸除變數
1104
			$tempVar=NULL;
1105
 
1106
			#卸除session變數,僅會卸除$tempVar而已,session變數不會卸除.
1107
			#unset($tempVar);
1108
 
1109
			}#if end
1110
 
1111
		#設置執行正常
1112
		$result["status"]="true";
1113
 
1114
		#回傳結果
1115
		return $result;
1116
 
1117
		}#assignSessionValueToVariable end
1118
 
1119
	/*
1120
	#函式說明:
1121
	#判斷變數是否存在,將之儲存到session變數裏面
1122
	#回傳結果:
1123
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1124
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
1125
	#$result["function"],當前執行的函式名稱.
1126
	#$result["founded"],變數是否存在,"true"為存在,"false"為不存在.
1127
	#必填參數:
1128
	#$conf["var"],參考變數,想要確認是否存在的變數
1129
	$conf["var"]=&;
1130
	#$conf["sessionVarName"],陣列字串,要將變數存到key為什麼的session多維變數裏面
1131
	$conf["sessionVarName"]=array();
1132
	#可省略參數:
1133
	#無.
1134
	#參考資料:
1135
	#無.
1136
	#備註:
1137
	#要改寫成可以依據 $conf["sessionVarName"] 元素數量建立多維的session變數.
1138
	*/
1139
	public static function assignVarToSessionValue(&$conf){
1140
 
1141
		#初始化要回傳的內容
1142
		$result=array();
1143
 
1144
		#記錄當前執行的函數名稱
1145
		$result["function"]=__FUNCTION__;
1146
 
1147
		#如果 $conf 不為陣列
1148
		if(gettype($conf)!="array"){
1149
 
1150
			#設置執行失敗
1151
			$result["status"]="false";
1152
 
1153
			#設置執行錯誤訊息
1154
			$result["error"][]="\$conf變數須為陣列形態";
1155
 
1156
			#如果傳入的參數為 null
1157
			if($conf==null){
1158
 
1159
				#設置執行錯誤訊息
1160
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1161
 
1162
				}#if end
1163
 
1164
			#回傳結果
1165
			return $result;
1166
 
1167
			}#if end
1168
 
1169
		#檢查參數
1170
		#函式說明:
1171
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
1172
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1173
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1174
		#$result["function"],當前執行的函式名稱.
1175
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1176
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1177
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1178
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1179
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1180
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1181
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1182
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1183
		#必填參數:
1184
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1185
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
1186
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1187
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("var","sessionVarName");
1188
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
1189
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array(null,"array");
1190
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1191
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
1192
		#可省略參數:
1193
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1194
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
1195
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
1196
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array();
1197
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1198
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("ifEmptyThenSet","unsetSessionVar");
1199
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1200
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string");
1201
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1202
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("","false");
1203
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1204
		#$conf["arrayCountEqualCheck"][]=array();
1205
		#參考資料來源:
1206
		#array_keys=>http://php.net/manual/en/function.array-keys.php
1207
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
1208
		unset($conf["variableCheck::checkArguments"]);
1209
 
1210
		#如果檢查失敗
1211
		if($checkArguments["status"]==="false"){
1212
 
1213
			#設置錯誤識別
1214
			$result["status"]="false";
1215
 
1216
			#設置錯誤訊息
1217
			$result["error"]=$checkArguments;
1218
 
1219
			#回傳結果
1220
			return $result;
1221
 
1222
			}#if end
1223
 
1224
		#如果檢查不通過
1225
		if($checkArguments["passed"]==="false"){
1226
 
1227
			#設置錯誤識別
1228
			$result["status"]="false";
1229
 
1230
			#設置錯誤訊息
1231
			$result["error"]=$checkArguments;
1232
 
1233
			#回傳結果
1234
			return $result;
1235
 
1236
			}#if end
1237
 
1238
		#若變數是不存在
1239
		if(!isset($conf["var"])){
1240
 
1241
			#設置找不到變數
1242
			$result["founded"]="false";
1243
 
1244
			}#if end
1245
 
1246
		#反之
1247
		else{
1248
 
1249
			#設置找到變數
1250
			$result["founded"]="true";
1251
 
1252
			#初始化暫存 session 變數參考的變數
1253
			$tempVar;
1254
 
1255
			#依據 $conf["sessionVarName"] 的元素個數建立 session 變數
1256
			for($i=0;$i<count($conf["sessionVarName"]);$i++){
1257
 
1258
				#如果是第一層
1259
				if($i==0){
1260
 
1261
					#如果是最後一層
1262
					if($i==count($conf["sessionVarName"])-1){
1263
 
1264
						#建立 session 變數,並指定內容.
1265
						$_SESSION[$conf["sessionVarName"][$i]]=$conf["var"];
1266
 
1267
						}#if end
1268
 
1269
					#反之
1270
					else{
1271
 
1272
						#如果 session 變數未建立
1273
						if(!isset($_SESSION[$conf["sessionVarName"][$i]])){
1274
 
1275
							#建立 session 變數,指派為空陣列
1276
							$_SESSION[$conf["sessionVarName"][$i]]=array();
1277
 
1278
							}#if end
1279
 
1280
						}#else end
1281
 
1282
					#取得 session 變數的參考
1283
					$tempVar=&$_SESSION[$conf["sessionVarName"][$i]];
1284
 
1285
					}#if end
1286
 
1287
				#反之
1288
				else{
1289
 
1290
					#如果是最後一層
1291
					if($i==count($conf["sessionVarName"])-1){
1292
 
1293
						#建立 session 變數,並指定內容.
1294
						$tempVar[$conf["sessionVarName"][$i]]=$conf["var"];
1295
 
1296
						}#if end
1297
 
1298
					#反之
1299
					else{
1300
						#如果 session 變數未建立
1301
						if(!isset($tempVar[$conf["sessionVarName"][$i]])){
1302
 
1303
							#建立 session 變數,指派為空陣列
1304
							$tempVar[$conf["sessionVarName"][$i]]=array();
1305
 
1306
							}#if end
1307
 
1308
						}#else end
1309
 
1310
					#取得 session 變數的參考
1311
					$tempVar=&$tempVar[$conf["sessionVarName"][$i]];
1312
 
1313
					}#else end
1314
 
1315
				#debug
1316
				#unset($_SESSION["manageDbAndTable"]);
1317
				#unset($_SESSION[""]);
1318
				#unset($_SESSION["variableCheck"]);
1319
				#var_dump($_SESSION);
1320
 
1321
				}#for end
1322
 
1323
			}#else end
1324
 
1325
		#設置執行正常
1326
		$result["status"]="true";
1327
 
1328
		#回傳結果
1329
		return $result;
1330
 
1331
		}#function assignVarToSessionValue end
1332
 
1333
	/*
1334
	#函式說明:
1335
	#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
1336
	#回傳結果:
1337
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1338
	#$result["error"],錯誤訊息陣列.
1339
	#$result["function"],當前執行的函式名稱.
1340
	#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
1341
	#必填參數:
1342
	#$conf["checkedVar"],陣列,要檢查的變數陣列名稱為?
1343
	$conf["checkedVar"]=$conf;
1344
	#$conf["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
1345
	$conf["sikpableVarNameArray"]=array("",);
1346
	#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
1347
	$argu=&$conf;
1348
	#可省略參數:
1349
	#$conf["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何,null代表不指定變數形態.
1350
	#$conf["skipableVarTypeArray"]=array("",);
1351
	#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的變數要初始化為什麼,null代表不指定.
1352
	#$conf["skipableVarDefaultValue"]=array("",);
1353
	#參考資料:
1354
	#無.
1355
	#備註:
1356
	#無.
1357
	*/
1358
	public static function checkSkipableVarType($conf,&$argu){
1359
 
1360
		#初始化要回傳的內容
1361
		$result=array();
1362
 
1363
		#記錄當前執行的函數名稱
1364
		$result["function"]=__FUNCTION__;
1365
 
1366
		#如果 $conf 不為陣列
1367
		if(gettype($conf)!="array"){
1368
 
1369
			#設置執行失敗
1370
			$result["status"]="false";
1371
 
1372
			#設置執行錯誤訊息
1373
			$result["error"][]="\$conf變數須為陣列形態";
1374
 
1375
			#如果傳入的參數為 null
1376
			if($conf==null){
1377
 
1378
				#設置執行錯誤訊息
1379
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1380
 
1381
				}#if end
1382
 
1383
			#回傳結果
1384
			return $result;
1385
 
1386
			}#if end
1387
 
1388
		#設置當前函式名稱
1389
		#參考資料來源:
1390
		#http://php.net/manual/en/language.constants.predefined.php
1391
		$result["function"]=__FUNCTION__;
1392
 
1393
		#如果 $conf 不為陣列
1394
		if(gettype($conf)!="array"){
1395
 
1396
			#設置執行失敗
1397
			$result["status"]="false";
1398
 
1399
			#設置執行錯誤訊息
1400
			$result["error"][]="\$conf變數須為陣列形態";
1401
 
1402
			#回傳結果
1403
			return $result;
1404
 
1405
			}#if end
1406
 
1407
		#檢查參數
1408
		#函式說明:
1409
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1410
		#回傳結果:
1411
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1412
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1413
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1414
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1415
		#必填參數:
1416
		$conf["variableCheck::isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
1417
		$conf["variableCheck::isexistMulti"]["variableCheck"]=array("checkedVar","sikpableVarNameArray");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1418
		#可省略參數:
1419
		$conf["variableCheck::isexistMulti"]["variableType"]=array("array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1420
		#$conf["variableCheck::isexistMulti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1421
		$checkResult=variableCheck::isexistMulti($conf["variableCheck::isexistMulti"]);
1422
		unset($conf["variableCheck::isexistMulti"]);
1423
 
1424
		#如果 $checkResult["status"]等於 "false"
1425
		if($checkResult["status"]=="false"){
1426
 
1427
			#設置執行錯誤的識別
1428
			$result["status"]="false";
1429
 
1430
			#設置錯誤訊息
1431
			$result["error"]=$checkResult;
1432
 
1433
			#回傳結果
1434
			return $result;
1435
 
1436
			}#if end
1437
 
1438
		#如果 $checkResult["passed"]等於 "false"
1439
		if($checkResult["passed"]=="false"){
1440
 
1441
			#設置執行錯誤的識別
1442
			$result["status"]="false";
1443
 
1444
			#設置錯誤訊息
1445
			$result["error"]=$checkResult;
1446
 
1447
			#回傳結果
1448
			return $result;
1449
 
1450
			}#if end
1451
 
1452
		#依據每個要檢查的可省略變數key
1453
		for($i=0;$i<count($conf["sikpableVarNameArray"]);$i++){
1454
 
1455
			#如果 $conf["checkedVar"][$conf["sikpableVarNameArray"][$i]] 有設定
1456
			if(isset($conf["checkedVar"][$conf["sikpableVarNameArray"][$i]])){
1457
 
1458
				#如果有設定 $conf["skipableVarTypeArray"][$i]
1459
				if(isset($conf["skipableVarTypeArray"][$i])){
1460
 
1461
					#如果 $conf["checkedVar"][$conf["sikpableVarNameArray"][$i]] 的型態不等於 $conf["sikpableVarTypeArray"][$i] 且 $conf["skipableVarTypeArray"][$i] 不為 null
1462
					if(gettype($conf["checkedVar"][$conf["sikpableVarNameArray"][$i]])!=$conf["skipableVarTypeArray"][$i] && $conf["skipableVarTypeArray"][$i]!=null){
1463
 
1464
						#type "any" 不用檢查
1465
						if($conf["skipableVarTypeArray"][$i]!=="any"){
226 liveuser 1466
 
3 liveuser 1467
							#設置執行正常
1468
							$result["status"]="true";
1469
 
1470
							#設置執行錯誤識別
1471
							$result["passed"]="false";
1472
 
1473
							#設置錯誤訊息
1474
							$result["error"][]=$conf["sikpableVarNameArray"][$i]."須為".$conf["skipableVarTypeArray"][$i]."型態";
1475
 
1476
							#回傳結果
1477
							return $result;
226 liveuser 1478
 
3 liveuser 1479
							}#if end
1480
 
1481
						}#if end
1482
 
1483
					}#if end
1484
 
1485
				}#if end
1486
 
1487
			#反之該變數不存在
1488
			else{
1489
 
1490
				#如果 $conf["skipableVarDefaultValue"] 有設置
1491
				if(isset($conf["skipableVarDefaultValue"])){
1492
 
1493
					#如果 $conf["skipableVarDefaultValue"] 為 "array"
1494
					if(gettype($conf["skipableVarDefaultValue"])=="array"){
1495
 
1496
						#如果 $conf["skipableVarDefaultValue"][$i] 完全不等於 null
1497
						if($conf["skipableVarDefaultValue"][$i]!==null){
1498
 
1499
							#初始化該變數內容
1500
							$argu[$conf["sikpableVarNameArray"][$i]]=$conf["skipableVarDefaultValue"][$i];
1501
 
1502
							}#if end
1503
 
1504
						}#if end
1505
 
1506
					}#if end
1507
 
1508
				}#else end
1509
 
1510
			}#for end
1511
 
1512
		#設置執行正常
1513
		$result["status"]="true";
1514
 
1515
		#執行到這邊代表檢查通過
1516
		$result["passed"]="true";
1517
 
1518
		#回傳結果
1519
		return $result;
1520
 
1521
		}#funciton checkSkipableVarType end
1522
 
1523
	/*
1524
	#函式說明:
1525
	#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
1526
	#回傳結果:
1527
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1528
	#$result["error"],執行不正常結束的錯訊息陣列.
1529
	#$result["simpleError"],簡單表示的錯誤訊息.
1530
	#$result["function"],當前執行的函式名稱.
1531
	#$result["argu"],設置給予的參數.
1532
	#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1533
	#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1534
	#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1535
	#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
1536
	#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
1537
	#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
1538
	#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
1539
	#$result["notNeedVar"],字串陣列,多餘的參數名稱.
1540
	#必填參數:
1541
	#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
1542
	$conf["varInput"]=&$conf;
1543
	#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
1544
	$conf["referenceVarKey"]="variableCheck::checkArguments";
1545
	#可省略參數:
1546
	#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
1547
	#$conf["mustBeFilledVariableName"]=array();
1548
	#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
1549
	#$conf["mustBeFilledVariableType"]=array();
1550
	#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
1551
	#$conf["canBeEmptyString"]="false";
1552
	#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1553
	#$conf["canNotBeEmpty"]=array();
1554
	#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1555
	#$conf["canBeEmpty"]=array();
1556
	#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
1557
	#$conf["skipableVariableCanNotBeEmpty"]=array();
1558
	#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
1559
	#$conf["skipableVariableName"]=array();
1560
	#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
1561
	#$conf["skipableVariableType"]=array();
1562
	#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
1563
	#$conf["skipableVarDefaultValue"]=array("");
1564
	#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
1565
	#$conf["disallowAllSkipableVarIsEmpty"]="";
1566
	#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
1567
	#$conf["disallowAllSkipableVarIsEmptyArray"]="";
1568
	#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
1569
	#$conf["disallowAllSkipableVarNotExist"]="";
1570
	#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
1571
	#$conf["arrayCountEqualCheck"][]=array();
396 liveuser 1572
	#$conf["arrayCount"],字串陣列,為檢查指定的陣列參數,其元素數量要為多少,預設不指定.
1573
	#$conf["arrayCount"][]=array("variableName",$elementCount);
3 liveuser 1574
	#參考資料:
1575
	#array_keys=>http://php.net/manual/en/function.array-keys.php
1576
	#備註:
1577
	#無.
1578
	*/
1579
	public static function checkArguments(&$conf){
226 liveuser 1580
 
3 liveuser 1581
		#初始化要回傳的結果
1582
		$result=array();
1583
 
1584
		#設置當其函數名稱
1585
		$result["function"]=__FUNCTION__;
1586
 
1587
		#如果 $conf 不為陣列
1588
		if(gettype($conf)!="array"){
1589
 
1590
			#設置執行失敗
1591
			$result["status"]="false";
1592
 
1593
			#設置執行錯誤訊息
1594
			$result["error"][]="\$conf變數須為陣列形態";
1595
 
1596
			#如果傳入的參數為 null
182 liveuser 1597
			if($conf===null){
3 liveuser 1598
 
1599
				#設置執行錯誤訊息
1600
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1601
 
1602
				}#if end
1603
 
1604
			#函式說明:
1605
			#取得簡單的錯誤訊息
1606
			#回傳結果:
1607
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1608
			#$result["content"],結果.
1609
			#$result["function"],當前執行的函數
1610
			#$result["error"],涵式錯誤訊息陣列
1611
			#必填參數:
1612
			$conf["variableCheck::getSimpleError"]=array();
1613
			#$conf["error"],陣列,要處理的變數.
1614
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1615
			#可省略參數:
1616
			#無
1617
			#參考資料:
1618
			#無.
1619
			#備註:
1620
			#無.
1621
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1622
			unset($conf["variableCheck::getSimpleError"]);
1623
 
1624
			#如果執行失敗
1625
			if($getSimpleError["status"]==="false"){
226 liveuser 1626
 
3 liveuser 1627
				#設置執行錯誤訊息
1628
				$result["error"][]=$getSimpleError;
226 liveuser 1629
 
3 liveuser 1630
				#回傳結果
1631
				return $result;
1632
 
1633
				}#if end
1634
 
1635
			#設置 $simpleError
1636
			$result["simpleError"]=$getSimpleError["content"];
1637
 
1638
			#回傳結果
1639
			return $result;
1640
 
1641
			}#if end
1642
 
1643
		#設置放置的參數
1644
		$result["argu"]=$conf;
1645
 
1646
		#檢查必填參數
1647
		#函式說明:
1648
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1649
		#回傳結果:
1650
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1651
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1652
		#$result["function"],當前執行的函式名稱.
1653
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1654
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1655
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1656
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1657
		#必填參數:
1658
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
1659
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("varInput","referenceVarKey");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1660
		#可省略參數:
1661
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1662
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="true";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1663
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1664
		#$conf["variableCheck.isexistMulti"]["canNotBeEmpty"]=array();
1665
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1666
		#$conf["variableCheck.isexistMulti"]["canBeEmpty"]=array();
1667
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
1668
		unset($conf["variableCheck.isexistMulti"]);
1669
 
1670
		#如果檢查失敗
1671
		if($checkResult["status"]==="false"){
1672
 
1673
			#設置錯誤識別
1674
			$result["status"]="false";
1675
 
1676
			#設置錯誤訊息
1677
			$result["error"]=$checkResult;
1678
 
1679
			#函式說明:
1680
			#取得簡單的錯誤訊息
1681
			#回傳結果:
1682
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1683
			#$result["content"],結果.
1684
			#$result["function"],當前執行的函數
1685
			#$result["error"],涵式錯誤訊息陣列
1686
			#必填參數:
1687
			$conf["variableCheck::getSimpleError"]=array();
1688
			#$conf["error"],陣列,要處理的變數.
1689
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1690
			#可省略參數:
1691
			#無
1692
			#參考資料:
1693
			#無.
1694
			#備註:
1695
			#無.
1696
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1697
			unset($conf["variableCheck::getSimpleError"]);
1698
 
1699
			#如果執行失敗
1700
			if($getSimpleError["status"]==="false"){
226 liveuser 1701
 
3 liveuser 1702
				#設置執行錯誤訊息
1703
				$result["error"][]=$getSimpleError;
226 liveuser 1704
 
3 liveuser 1705
				#回傳結果
1706
				return $result;
1707
 
1708
				}#if end
1709
 
1710
			#設置 $simpleError
1711
			$result["simpleError"]=$getSimpleError["content"];
1712
 
1713
			#回傳結果
1714
			return $result;
1715
 
1716
			}#if end
1717
 
1718
		#如果檢查不通過
1719
		if($checkResult["passed"]==="false"){
1720
 
1721
			#設置執正常
1722
			$result["status"]="true";
226 liveuser 1723
 
3 liveuser 1724
			#設置錯誤識別
1725
			$result["passed"]="false";
1726
 
1727
			#設置錯誤訊息
1728
			$result["error"]=$checkResult;
1729
 
1730
			#函式說明:
1731
			#取得簡單的錯誤訊息
1732
			#回傳結果:
1733
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1734
			#$result["content"],結果.
1735
			#$result["function"],當前執行的函數
1736
			#$result["error"],涵式錯誤訊息陣列
1737
			#必填參數:
1738
			$conf["variableCheck::getSimpleError"]=array();
1739
			#$conf["error"],陣列,要處理的變數.
1740
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1741
			#可省略參數:
1742
			#無
1743
			#參考資料:
1744
			#無.
1745
			#備註:
1746
			#無.
1747
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1748
			unset($conf["variableCheck::getSimpleError"]);
1749
 
1750
			#如果執行失敗
1751
			if($getSimpleError["status"]==="false"){
226 liveuser 1752
 
3 liveuser 1753
				#設置執行錯誤訊息
1754
				$result["error"][]=$getSimpleError;
226 liveuser 1755
 
3 liveuser 1756
				#回傳結果
1757
				return $result;
1758
 
1759
				}#if end
1760
 
1761
			#設置 $simpleError
1762
			$result["simpleError"]=$getSimpleError["content"];
1763
 
1764
			#回傳結果
1765
			return $result;
1766
 
1767
			}#if end
1768
 
1769
		#檢查可省略參數
1770
		#函式說明:
1771
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
1772
		#回傳結果:
1773
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1774
		#$result["error"],錯誤訊息陣列.
1775
		#$result["function"],當前執行的函式名稱.
1776
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
1777
		#必填參數:
1778
		#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
1779
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
1780
		#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
396 liveuser 1781
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("mustBeFilledVariableName","mustBeFilledVariableType","canBeEmptyString","canNotBeEmpty","canBeEmpty","skipableVariableCanNotBeEmpty","skipableVariableName","skipableVariableType","skipableVarDefaultValue","arrayCountEqualCheck","disallowAllSkipableVarIsEmpty","disallowAllSkipableVarNotExist","disallowAllSkipableVarIsEmptyArray","arrayCount");
3 liveuser 1782
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
1783
		$argu=&$conf;
1784
		#可省略參數:
1785
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
396 liveuser 1786
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("array","array","string","array","array","array","array","array","array","array","string","string","string","array");
3 liveuser 1787
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
396 liveuser 1788
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array(null,null,"true",null,null,null,null,null,null,null,"false","false","false",null);
3 liveuser 1789
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
1790
		unset($conf["variableCheck.checkSkipableVarType"]);
1791
 
1792
		#如果檢查失敗
1793
		if($checkResult["status"]=="false"){
1794
 
1795
			#設置錯誤識別
1796
			$result["status"]="false";
1797
 
1798
			#設置錯誤訊息
1799
			$result["error"]=$checkResult;
1800
 
1801
			#函式說明:
1802
			#取得簡單的錯誤訊息
1803
			#回傳結果:
1804
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1805
			#$result["content"],結果.
1806
			#$result["function"],當前執行的函數
1807
			#$result["error"],涵式錯誤訊息陣列
1808
			#必填參數:
1809
			$conf["variableCheck::getSimpleError"]=array();
1810
			#$conf["error"],陣列,要處理的變數.
1811
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1812
			#可省略參數:
1813
			#無
1814
			#參考資料:
1815
			#無.
1816
			#備註:
1817
			#無.
1818
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1819
			unset($conf["variableCheck::getSimpleError"]);
1820
 
1821
			#如果執行失敗
1822
			if($getSimpleError["status"]==="false"){
226 liveuser 1823
 
3 liveuser 1824
				#設置執行錯誤訊息
1825
				$result["error"][]=$getSimpleError;
226 liveuser 1826
 
3 liveuser 1827
				#回傳結果
1828
				return $result;
1829
 
1830
				}#if end
1831
 
1832
			#設置 $simpleError
1833
			$result["simpleError"]=$getSimpleError["content"];
1834
 
1835
			#回傳結果
1836
			return $result;
1837
 
1838
			}#if end
1839
 
1840
		#如果檢查不通過
1841
		if($checkResult["passed"]=="false"){
1842
 
1843
			#設置執正常
1844
			$result["status"]="true";
226 liveuser 1845
 
3 liveuser 1846
			#設置錯誤識別
1847
			$result["passed"]="false";
1848
 
1849
			#設置錯誤訊息
1850
			$result["error"]=$checkResult;
1851
 
1852
			#函式說明:
1853
			#取得簡單的錯誤訊息
1854
			#回傳結果:
1855
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1856
			#$result["content"],結果.
1857
			#$result["function"],當前執行的函數
1858
			#$result["error"],涵式錯誤訊息陣列
1859
			#必填參數:
1860
			$conf["variableCheck::getSimpleError"]=array();
1861
			#$conf["error"],陣列,要處理的變數.
1862
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1863
			#可省略參數:
1864
			#無
1865
			#參考資料:
1866
			#無.
1867
			#備註:
1868
			#無.
1869
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1870
			unset($conf["variableCheck::getSimpleError"]);
1871
 
1872
			#如果執行失敗
1873
			if($getSimpleError["status"]==="false"){
226 liveuser 1874
 
3 liveuser 1875
				#設置執行錯誤訊息
1876
				$result["error"][]=$getSimpleError;
226 liveuser 1877
 
3 liveuser 1878
				#回傳結果
1879
				return $result;
1880
 
1881
				}#if end
1882
 
1883
			#設置 $simpleError
1884
			$result["simpleError"]=$getSimpleError["content"];
1885
 
1886
			#回傳結果
1887
			return $result;
1888
 
1889
			}#if end
1890
 
1891
		#如果有設置 $conf["mustBeFilledVariableName"] 跟 $conf["mustBeFilledVariableType"]
1892
		if( isset($conf["mustBeFilledVariableName"])===true && isset($conf["mustBeFilledVariableType"])===true ){
1893
 
1894
			#檢查輸入參數的數量是否不一致
1895
			if(count($conf["mustBeFilledVariableName"])!==count($conf["mustBeFilledVariableType"])){
1896
 
1897
				#設置錯誤識別
1898
				$result["status"]="false";
1899
 
1900
				#設置錯誤訊息
1901
				$result["error"][]="參數 \"mustBeFilledVariableName\" 與 \"mustBeFilledVariableType\" 的數量要一致";
1902
 
1903
				#函式說明:
1904
				#取得簡單的錯誤訊息
1905
				#回傳結果:
1906
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1907
				#$result["content"],結果.
1908
				#$result["function"],當前執行的函數
1909
				#$result["error"],涵式錯誤訊息陣列
1910
				#必填參數:
1911
				$conf["variableCheck::getSimpleError"]=array();
1912
				#$conf["error"],陣列,要處理的變數.
1913
				$conf["variableCheck::getSimpleError"]["error"]=$result;
1914
				#可省略參數:
1915
				#無
1916
				#參考資料:
1917
				#無.
1918
				#備註:
1919
				#無.
1920
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1921
				unset($conf["variableCheck::getSimpleError"]);
1922
 
1923
				#如果執行失敗
1924
				if($getSimpleError["status"]==="false"){
226 liveuser 1925
 
3 liveuser 1926
					#設置執行錯誤訊息
1927
					$result["error"][]=$getSimpleError;
226 liveuser 1928
 
3 liveuser 1929
					#回傳結果
1930
					return $result;
1931
 
1932
					}#if end
1933
 
1934
				#設置 $simpleError
1935
				$result["simpleError"]=$getSimpleError["content"];
1936
 
1937
				#回傳結果
1938
				return $result;
1939
 
1940
				}#if end
1941
 
1942
			#函式說明:
1943
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1944
			#回傳結果:
1945
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1946
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
1947
			#$result["function"],當前執行的函式名稱.
1948
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1949
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1950
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1951
			#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1952
			#必填參數:
1953
			$conf["variableCheck.isexistMulti"]["varInput"]=$conf["varInput"];#要檢查的陣列變數
1954
			$conf["variableCheck.isexistMulti"]["variableCheck"]=$conf["mustBeFilledVariableName"];#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1955
			#可省略參數:
1956
			$conf["variableCheck.isexistMulti"]["variableType"]=$conf["mustBeFilledVariableType"];#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1957
			#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1958
			$conf["variableCheck.isexistMulti"]["canBeEmptyString"]=$conf["canBeEmptyString"];
1959
 
1960
			#如果設定必填參數可以為空字串或集合
1961
			if($conf["canBeEmptyString"]=="true"){
1962
 
1963
				#如果有設定要排除的不能為空字串或空集合的變數
1964
				if(isset($conf["canNotBeEmpty"])){
1965
 
1966
					#設定其參數
1967
					$conf["variableCheck.isexistMulti"]["canNotBeEmpty"]=$conf["canNotBeEmpty"];
1968
 
1969
					}#if end
1970
 
1971
				}#if end
1972
 
1973
			#如果設定必填參數不可以為空字串或集合
1974
			else if($conf["canBeEmptyString"]=="false"){
1975
 
1976
				#如果有設定要排除的不能為空字串或空集合的變數
1977
				if(isset($conf["canBeEmpty"])){
1978
 
1979
					#設定其參數
1980
					$conf["variableCheck.isexistMulti"]["canBeEmpty"]=$conf["canBeEmpty"];
1981
 
1982
					}#if end
1983
 
1984
				}#if end
1985
 
1986
			$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
1987
			unset($conf["variableCheck.isexistMulti"]);
1988
 
1989
			#如果檢查失敗
1990
			if($checkResult["status"]=="false"){
1991
 
1992
				#設置錯誤識別
1993
				$result["status"]="false";
1994
 
1995
				#設置錯誤訊息
1996
				$result["error"]=$checkResult;
1997
 
1998
				#函式說明:
1999
				#取得簡單的錯誤訊息
2000
				#回傳結果:
2001
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2002
				#$result["content"],結果.
2003
				#$result["function"],當前執行的函數
2004
				#$result["error"],涵式錯誤訊息陣列
2005
				#必填參數:
2006
				$conf["variableCheck::getSimpleError"]=array();
2007
				#$conf["error"],陣列,要處理的變數.
2008
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2009
				#可省略參數:
2010
				#無
2011
				#參考資料:
2012
				#無.
2013
				#備註:
2014
				#無.
2015
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2016
				unset($conf["variableCheck::getSimpleError"]);
2017
 
2018
				#如果執行失敗
2019
				if($getSimpleError["status"]==="false"){
226 liveuser 2020
 
3 liveuser 2021
					#設置執行錯誤訊息
2022
					$result["error"][]=$getSimpleError;
226 liveuser 2023
 
3 liveuser 2024
					#回傳結果
2025
					return $result;
2026
 
2027
					}#if end
2028
 
2029
				#設置 $simpleError
2030
				$result["simpleError"]=$getSimpleError["content"];
2031
 
2032
				#回傳結果
2033
				return $result;
226 liveuser 2034
 
3 liveuser 2035
				}#if end
2036
 
2037
			#如果檢查不通過
2038
			if($checkResult["passed"]=="false"){
2039
 
2040
				#設置執正常
2041
				$result["status"]="true";
226 liveuser 2042
 
3 liveuser 2043
				#設置錯誤識別
2044
				$result["passed"]="false";
2045
 
2046
				#設置錯誤訊息
2047
				$result["error"]=$checkResult;
2048
 
2049
				#函式說明:
2050
				#取得簡單的錯誤訊息
2051
				#回傳結果:
2052
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2053
				#$result["content"],結果.
2054
				#$result["function"],當前執行的函數
2055
				#$result["error"],涵式錯誤訊息陣列
2056
				#必填參數:
2057
				$conf["variableCheck::getSimpleError"]=array();
2058
				#$conf["error"],陣列,要處理的變數.
2059
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2060
				#可省略參數:
2061
				#無
2062
				#參考資料:
2063
				#無.
2064
				#備註:
2065
				#無.
2066
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2067
				unset($conf["variableCheck::getSimpleError"]);
2068
 
2069
				#如果執行失敗
2070
				if($getSimpleError["status"]==="false"){
226 liveuser 2071
 
3 liveuser 2072
					#設置執行錯誤訊息
2073
					$result["error"][]=$getSimpleError;
226 liveuser 2074
 
3 liveuser 2075
					#回傳結果
2076
					return $result;
2077
 
2078
					}#if end
2079
 
2080
				#設置 $simpleError
2081
				$result["simpleError"]=$getSimpleError["content"];
2082
 
2083
				#回傳結果
2084
				return $result;
2085
 
2086
				}#if end
2087
 
2088
			}#if end
2089
 
2090
		#如果 $conf["skipableVariableName"] 與 $conf["skipableVariableType"] 存在
2091
		if(isset($conf["skipableVariableName"]) && isset($conf["skipableVariableType"])){
2092
 
2093
			#如果 $conf["skipableVariableName"] 與 $conf["skipableVariableType"] 的元素數量不一致
2094
			if(count($conf["skipableVariableName"])!=count($conf["skipableVariableType"])){
2095
 
2096
				#設置錯誤識別
2097
				$result["status"]="false";
2098
 
2099
				#設置錯誤識別
2100
				$result["passed"]="false";
2101
 
2102
				#設置錯誤訊息
2103
				$result["error"][]="\$conf[\"skipableVariableName\"] 與 \$conf[\"skipableVariableType\"] 的元素數量不一致";
2104
 
2105
				#函式說明:
2106
				#取得簡單的錯誤訊息
2107
				#回傳結果:
2108
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2109
				#$result["content"],結果.
2110
				#$result["function"],當前執行的函數
2111
				#$result["error"],涵式錯誤訊息陣列
2112
				#必填參數:
2113
				$conf["variableCheck::getSimpleError"]=array();
2114
				#$conf["error"],陣列,要處理的變數.
2115
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2116
				#可省略參數:
2117
				#無
2118
				#參考資料:
2119
				#無.
2120
				#備註:
2121
				#無.
2122
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2123
				unset($conf["variableCheck::getSimpleError"]);
2124
 
2125
				#如果執行失敗
2126
				if($getSimpleError["status"]==="false"){
226 liveuser 2127
 
3 liveuser 2128
					#設置執行錯誤訊息
2129
					$result["error"][]=$getSimpleError;
226 liveuser 2130
 
3 liveuser 2131
					#回傳結果
2132
					return $result;
2133
 
2134
					}#if end
2135
 
2136
				#設置 $simpleError
2137
				$result["simpleError"]=$getSimpleError["content"];
2138
 
2139
				#回傳結果
2140
				return $result;
2141
 
2142
				}#if end
2143
 
2144
			}#if end
2145
 
2146
		#如果 $conf["skipableVariableName"] 有設置
2147
		if(isset($conf["skipableVariableName"]) && isset($conf["skipableVarDefaultValue"])){
2148
 
2149
			#如果 $conf["skipableVariableName"] 與 $conf["skipableVarDefaultValue"] 的元素數量不一致
2150
			if(count($conf["skipableVariableName"])!=count($conf["skipableVarDefaultValue"])){
2151
 
2152
				#設置執正常
2153
				$result["status"]="true";
226 liveuser 2154
 
3 liveuser 2155
				#設置錯誤識別
2156
				$result["passed"]="false";
2157
 
2158
				#設置錯誤訊息
2159
				$result["error"][]="\$conf[\"skipableVariableName\"] 與 \$conf[\"skipableVarDefaultValue\"] 的元素數量不一致";
2160
 
2161
				#函式說明:
2162
				#取得簡單的錯誤訊息
2163
				#回傳結果:
2164
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2165
				#$result["content"],結果.
2166
				#$result["function"],當前執行的函數
2167
				#$result["error"],涵式錯誤訊息陣列
2168
				#必填參數:
2169
				$conf["variableCheck::getSimpleError"]=array();
2170
				#$conf["error"],陣列,要處理的變數.
2171
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2172
				#可省略參數:
2173
				#無
2174
				#參考資料:
2175
				#無.
2176
				#備註:
2177
				#無.
2178
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2179
				unset($conf["variableCheck::getSimpleError"]);
2180
 
2181
				#如果執行失敗
2182
				if($getSimpleError["status"]==="false"){
226 liveuser 2183
 
3 liveuser 2184
					#設置執行錯誤訊息
2185
					$result["error"][]=$getSimpleError;
226 liveuser 2186
 
3 liveuser 2187
					#回傳結果
2188
					return $result;
2189
 
2190
					}#if end
2191
 
2192
				#設置 $simpleError
2193
				$result["simpleError"]=$getSimpleError["content"];
2194
 
2195
				#回傳結果
2196
				return $result;
2197
 
2198
				}#if end
2199
 
2200
			}#if end
2201
 
2202
		#如果有可省略變數的型態限定
2203
		if(isset($conf["skipableVariableType"])){
2204
 
2205
			#如果可省略變數有 string 型別
2206
			if(in_array("string",$conf["skipableVariableType"])){
2207
 
2208
				#如果 $conf["disallowAllSkipableVarIsEmpty"] 設置為 "true"
2209
				if($conf["disallowAllSkipableVarIsEmpty"]==="true"){
2210
 
2211
					#設置檢查不通過
2212
					$pass=false;
2213
 
2214
					#如果沒有指定可省略參數
2215
					if(!isset($conf["skipableVariableName"])){
2216
 
2217
						#設置通過檢測
2218
						$pass=true;
2219
 
2220
						}#if end
2221
 
2222
					#反之若可省略參數大於0
2223
					else if(count($conf["skipableVariableName"])>0){
2224
 
2225
						#設置是否有設置可省略變數
2226
						$haveSkipVar=false;
2227
 
2228
						#針對每個可省略的變數
2229
						foreach($conf["skipableVariableName"] as $varKey=>$varName){
2230
 
2231
							#如果該可省略變數有設置
2232
							if(isset($conf["varInput"][$varName])){
2233
 
2234
								#設置有設置可省略變數
2235
								$haveSkipVar=true;
2236
 
2237
								#如果是字串型態
2238
								if(gettype($conf["varInput"][$varName])==="string"){
2239
 
2240
									#如果是空字串
2241
									if($conf["varInput"][$varName]!==""){
2242
 
2243
										#設置通過檢測
2244
										$pass=true;
2245
 
2246
										#跳過檢查
2247
										break;
2248
 
2249
										}#if end
2250
 
2251
									}#if end
2252
 
2253
								}#if end
2254
 
2255
							}#foreach end
2256
 
2257
						#如果未設置可省略參數
2258
						if(!$haveSkipVar){
2259
 
2260
							#設置通過檢測
2261
							$pass=true;
2262
 
2263
							}#if end
2264
 
2265
						}#if end
2266
 
2267
					#反之
2268
					else{
2269
 
2270
						#設置通過檢測
2271
						$pass=true;
2272
 
2273
						}#else end
2274
 
2275
					#如果檢查不通過
2276
					if(!$pass){
2277
 
2278
						#設置執行正常
2279
						$result["status"]="true";
2280
 
2281
						#設置檢查不通過
2282
						$result["passed"]="false";
2283
 
2284
						#設置錯誤訊息
2285
						$result["warning"][]="可省略參數不都得為空字串";
2286
 
2287
						#回傳結果
2288
						return $result;
2289
 
2290
						}#if end
2291
 
2292
					}#if end
2293
 
2294
				}#if end
2295
 
2296
			#如果可省略變數有 array 型別
2297
			if(in_array("array",$conf["skipableVariableType"])){
2298
 
2299
				#如果 $conf["disallowAllSkipableVarIsEmptyArray"] 為 "true"
2300
				if($conf["disallowAllSkipableVarIsEmptyArray"]==="true"){
2301
 
2302
					#設置檢查不通過
2303
					$pass=false;
2304
 
2305
					#如果沒有指定可省略參數
2306
					if(!isset($conf["skipableVariableName"])){
2307
 
2308
						#設置通過檢測
2309
						$pass=true;
2310
 
2311
						}#if end
2312
 
2313
					#反之若可省略參數大於0
2314
					else if(count($conf["skipableVariableName"])>0){
2315
 
2316
						#針對每個可省略的變數
2317
						foreach($conf["skipableVariableName"] as $varKey=>$varName){
2318
 
2319
							#如果該可省略變數有設置
2320
							if(isset($conf["varInput"][$varName])){
2321
 
2322
								#如果是陣列型態
2323
								if(gettype($conf["varInput"][$varName])==="array"){
2324
 
2325
									#函式說明:
2326
									#檢查一陣列變數是否為空陣列
2327
									#回傳結果:
2328
									#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2329
									#$result["content"],css動畫設定的語法
2330
									#$result["function"],當前執行的函數
2331
									#$result["error"],涵式錯誤訊息陣列
2332
									#$result["empty"],"true"代表為空陣列,"false"代表不為空陣列.
2333
									#必填參數:
2334
									#$conf["var"],陣列變數.
2335
									$conf["variableCheck::emptyArray"]["var"]=$conf["varInput"][$varName];
2336
									#備註:
2337
									#無
2338
									$emptyArray=variableCheck::emptyArray($conf["variableCheck::emptyArray"]);
2339
									unset($conf["variableCheck::emptyArray"]);
2340
 
2341
									#如果檢查失敗
2342
									if($emptyArray["status"]==="false"){
2343
 
2344
										#設置執行失敗
2345
										$result["status"]="false";
2346
 
2347
										#設置錯誤訊息
2348
										$result["error"]=$emptyArray;
2349
 
2350
										#函式說明:
2351
										#取得簡單的錯誤訊息
2352
										#回傳結果:
2353
										#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2354
										#$result["content"],結果.
2355
										#$result["function"],當前執行的函數
2356
										#$result["error"],涵式錯誤訊息陣列
2357
										#必填參數:
2358
										$conf["variableCheck::getSimpleError"]=array();
2359
										#$conf["error"],陣列,要處理的變數.
2360
										$conf["variableCheck::getSimpleError"]["error"]=$result;
2361
										#可省略參數:
2362
										#無
2363
										#參考資料:
2364
										#無.
2365
										#備註:
2366
										#無.
2367
										$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2368
										unset($conf["variableCheck::getSimpleError"]);
2369
 
2370
										#如果執行失敗
2371
										if($getSimpleError["status"]==="false"){
226 liveuser 2372
 
3 liveuser 2373
											#設置執行錯誤訊息
2374
											$result["error"][]=$getSimpleError;
226 liveuser 2375
 
3 liveuser 2376
											#回傳結果
2377
											return $result;
2378
 
2379
											}#if end
2380
 
2381
										#設置 $simpleError
2382
										$result["simpleError"]=$getSimpleError["content"];
2383
 
2384
										#回傳結果
2385
										return $result;
2386
 
2387
										}#if end
2388
 
2389
									#如果不是空陣列
2390
									if($emptyArray["empty"]==="false"){
2391
 
2392
										#設置通過檢測
2393
										$pass=true;
2394
 
2395
										#跳過檢查
2396
										break;
2397
 
2398
										}#if end
2399
 
2400
									}#if end
2401
 
2402
								}#if end
2403
 
2404
							}#foreach end
2405
 
2406
						}#if end
2407
 
2408
					#反之
2409
					else{
2410
 
2411
						#設置通過檢測
2412
						$pass=true;
2413
 
2414
						}#else end
2415
 
2416
					#如果檢查不通過
2417
					if(!$pass){
2418
 
2419
						#設置執行正常
2420
						$result["status"]="true";
2421
 
2422
						#設置檢查不通過
2423
						$result["passed"]="false";
2424
 
2425
						#設置錯誤訊息
2426
						$result["warning"][]="可省略參數不都得為空陣列";
2427
 
2428
						#回傳結果
2429
						return $result;
2430
 
2431
						}#if end
2432
 
2433
					}#if end
2434
 
2435
				}#else end
226 liveuser 2436
 
3 liveuser 2437
			#如果可省略變數有 any 型別
2438
			if(in_array("any",$conf["skipableVariableType"])){
226 liveuser 2439
 
3 liveuser 2440
				#儲存可以為任意形態的變數
2441
				$anyTypeVarName=array();
226 liveuser 2442
 
3 liveuser 2443
				#針對每個可省略參數的形態
2444
				foreach($conf["skipableVariableType"] as $varKey=>$varType){
226 liveuser 2445
 
3 liveuser 2446
					#如果找到形態為any的變數形態
2447
					if($varType==="any"){
226 liveuser 2448
 
3 liveuser 2449
						#儲存形態為 any 的可省略變數名稱
2450
						$anyTypeVarName[]=$conf["skipableVariableName"][$varKey];
226 liveuser 2451
 
3 liveuser 2452
						}#if end
226 liveuser 2453
 
2454
					}#foreach end
2455
 
3 liveuser 2456
				#針對每個 any type 的可省略變數名稱
2457
				foreach($anyTypeVarName as $varName){
226 liveuser 2458
 
3 liveuser 2459
					#如果該可省略變數存在
2460
					if(isset($conf["varInput"][$varName])){
226 liveuser 2461
 
3 liveuser 2462
						#取得變數的形態
2463
						$varType=gettype($conf["varInput"][$varName]);
226 liveuser 2464
 
3 liveuser 2465
						#判斷變數的形態
2466
						switch($varType){
226 liveuser 2467
 
3 liveuser 2468
							#如果是字串
2469
							case "string":
226 liveuser 2470
 
3 liveuser 2471
								#如果 $conf["disallowAllSkipableVarIsEmpty"] 設置為 "true"
2472
								if($conf["disallowAllSkipableVarIsEmpty"]==="true"){
2473
 
2474
									#如果該變數是不被允許的空字串
2475
									if($conf["varInput"][$varName]===""){
226 liveuser 2476
 
3 liveuser 2477
										#設置執行正常
2478
										$result["status"]="true";
2479
 
2480
										#設置檢查不通過
2481
										$result["passed"]="false";
2482
 
2483
										#設置錯誤訊息
2484
										$result["warning"][]="可省略參數".$varName."不都得為空陣列";
2485
 
2486
										#回傳結果
2487
										return $result;
226 liveuser 2488
 
3 liveuser 2489
										}#if end
2490
 
2491
									}#if end
226 liveuser 2492
 
3 liveuser 2493
								#跳出switch
2494
								break;
226 liveuser 2495
 
3 liveuser 2496
							#如果是陣列
2497
							case "array":
226 liveuser 2498
 
3 liveuser 2499
								#如果 $conf["disallowAllSkipableVarIsEmptyArray"] 為 "true"
2500
								if($conf["disallowAllSkipableVarIsEmptyArray"]==="true"){
226 liveuser 2501
 
3 liveuser 2502
									#如果該變數是不被允許的空陣列
2503
									if($conf["varInput"][$varName]===array()){
226 liveuser 2504
 
3 liveuser 2505
										#設置執行正常
2506
										$result["status"]="true";
2507
 
2508
										#設置檢查不通過
2509
										$result["passed"]="false";
2510
 
2511
										#設置錯誤訊息
2512
										$result["warning"][]="可省略參數".$varName."不都得為空陣列";
2513
 
2514
										#回傳結果
2515
										return $result;
226 liveuser 2516
 
3 liveuser 2517
										}#if end
226 liveuser 2518
 
3 liveuser 2519
									}#if end
226 liveuser 2520
 
3 liveuser 2521
								#跳出switch
2522
								break;
226 liveuser 2523
 
3 liveuser 2524
							default:
226 liveuser 2525
 
3 liveuser 2526
							}#switch end
226 liveuser 2527
 
3 liveuser 2528
						}#if end
226 liveuser 2529
 
3 liveuser 2530
					}#foreach end
226 liveuser 2531
 
3 liveuser 2532
				}#if end
2533
 
2534
			}#if end
2535
 
2536
		#如果 $conf["skipableVarDefaultValue"] 有設置
2537
		if(isset($conf["skipableVarDefaultValue"])){
2538
 
2539
			#檢查 $conf["skipableVariableName"] 陣列中的每個可省略變數名稱
2540
			for($i=0;$i<count($conf["skipableVariableName"]);$i++){
2541
 
2542
				#如果 $conf["skipableVarDefaultValue"] 有設置
2543
				if(isset($conf["skipableVarDefaultValue"])){
2544
 
2545
					#如果 $conf["skipableVarDefaultValue"][$i] 為字串且不為空字串
2546
					if(gettype($conf["skipableVarDefaultValue"][$i])==="string" && $conf["skipableVarDefaultValue"][$i]!=""){
2547
 
2548
						#尋找有無$開頭的字串
2549
						#函式說明:
2550
						#取得字首一樣的字串,並回傳其字串。
2551
						#回傳結果:
2552
						#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
2553
						#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
2554
						#$result["function"],當前執行的函數名稱.
2555
						#$result["error"],錯誤訊息陣列.
2556
						#$result["returnString"],爲符合字首條件的字串內容。
2557
						#必填參數:
2558
						$conf["search.getMeetConditionsString"]["checkString"]=$conf["skipableVarDefaultValue"][$i];#要檢查的字串
2559
						$conf["search.getMeetConditionsString"]["frontWord"]="\$";#用來檢查字首應該要有什麼字串
2560
						#用到的涵式:
2561
						#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
2562
						$isVariable=search::getMeetConditionsString($conf["search.getMeetConditionsString"]);
2563
						unset($conf["search.getMeetConditionsString"]);
2564
 
2565
						#如果尋找失敗
2566
						if($isVariable["status"]=="false"){
2567
 
2568
							#設置錯誤識別
2569
							$result["status"]="false";
2570
 
2571
							#設置錯誤訊息
2572
							$result["error"]=$isVariable;
2573
 
2574
							#函式說明:
2575
							#取得簡單的錯誤訊息
2576
							#回傳結果:
2577
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2578
							#$result["content"],結果.
2579
							#$result["function"],當前執行的函數
2580
							#$result["error"],涵式錯誤訊息陣列
2581
							#必填參數:
2582
							$conf["variableCheck::getSimpleError"]=array();
2583
							#$conf["error"],陣列,要處理的變數.
2584
							$conf["variableCheck::getSimpleError"]["error"]=$result;
2585
							#可省略參數:
2586
							#無
2587
							#參考資料:
2588
							#無.
2589
							#備註:
2590
							#無.
2591
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2592
							unset($conf["variableCheck::getSimpleError"]);
2593
 
2594
							#如果執行失敗
2595
							if($getSimpleError["status"]==="false"){
226 liveuser 2596
 
3 liveuser 2597
								#設置執行錯誤訊息
2598
								$result["error"][]=$getSimpleError;
226 liveuser 2599
 
3 liveuser 2600
								#回傳結果
2601
								return $result;
2602
 
2603
								}#if end
2604
 
2605
							#設置 $simpleError
2606
							$result["simpleError"]=$getSimpleError["content"];
2607
 
2608
							#回傳結果
2609
							return $result;
2610
 
2611
							}#if end
2612
 
2613
						#如果含有 "\$" 開頭
2614
						if($isVariable["founded"]=="true"){
2615
 
2616
							#用 " 分割含有 $ 的字串,取得中間那一段
2617
							#函式說明:
2618
							#將固定格式的字串分開,並回傳分開的結果。
2619
							#回傳的參數:
2620
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2621
							#$result["error"],錯誤訊息陣列
2622
							#$result["oriStr"],要分割的原始字串內容
2623
							#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2624
							#$result["dataCounts"],爲總共分成幾段
2625
							#必填參數:
2626
							$conf["stringProcess.spiltString"]["stringIn"]=$isVariable["returnString"];#要處理的字串。
2627
							$conf["stringProcess.spiltString"]["spiltSymbol"]="\"";#爲以哪個符號作爲分割
2628
							#備註:
2629
							#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
2630
							$spiltedStr=stringProcess::spiltString($conf["stringProcess.spiltString"]);
2631
							unset($conf["stringProcess.spiltString"]);
2632
 
2633
							#如果分割失敗
2634
							if($spiltedStr["status"]=="false"){
2635
 
2636
								#設置錯誤識別
2637
								$result["status"]="false";
2638
 
2639
								#設置錯誤訊息
2640
								$result["error"]=$spiltedStr;
2641
 
2642
								#函式說明:
2643
								#取得簡單的錯誤訊息
2644
								#回傳結果:
2645
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2646
								#$result["content"],結果.
2647
								#$result["function"],當前執行的函數
2648
								#$result["error"],涵式錯誤訊息陣列
2649
								#必填參數:
2650
								$conf["variableCheck::getSimpleError"]=array();
2651
								#$conf["error"],陣列,要處理的變數.
2652
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2653
								#可省略參數:
2654
								#無
2655
								#參考資料:
2656
								#無.
2657
								#備註:
2658
								#無.
2659
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2660
								unset($conf["variableCheck::getSimpleError"]);
2661
 
2662
								#如果執行失敗
2663
								if($getSimpleError["status"]==="false"){
226 liveuser 2664
 
3 liveuser 2665
									#設置執行錯誤訊息
2666
									$result["error"][]=$getSimpleError;
226 liveuser 2667
 
3 liveuser 2668
									#回傳結果
2669
									return $result;
2670
 
2671
									}#if end
2672
 
2673
								#設置 $simpleError
2674
								$result["simpleError"]=$getSimpleError["content"];
2675
 
2676
								#回傳結果
2677
								return $result;
2678
 
2679
								}#if end
2680
 
2681
							#如果分割出來沒有大於等於三段
2682
							if($spiltedStr["dataCounts"]<3){
2683
 
2684
								#設置錯誤識別
2685
								$result["status"]="false";
2686
 
2687
								#設置錯誤訊息
2688
								$result["error"]=$spiltedStr;
2689
 
2690
								#函式說明:
2691
								#取得簡單的錯誤訊息
2692
								#回傳結果:
2693
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2694
								#$result["content"],結果.
2695
								#$result["function"],當前執行的函數
2696
								#$result["error"],涵式錯誤訊息陣列
2697
								#必填參數:
2698
								$conf["variableCheck::getSimpleError"]=array();
2699
								#$conf["error"],陣列,要處理的變數.
2700
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2701
								#可省略參數:
2702
								#無
2703
								#參考資料:
2704
								#無.
2705
								#備註:
2706
								#無.
2707
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2708
								unset($conf["variableCheck::getSimpleError"]);
2709
 
2710
								#如果執行失敗
2711
								if($getSimpleError["status"]==="false"){
226 liveuser 2712
 
3 liveuser 2713
									#設置執行錯誤訊息
2714
									$result["error"][]=$getSimpleError;
226 liveuser 2715
 
3 liveuser 2716
									#回傳結果
2717
									return $result;
2718
 
2719
									}#if end
2720
 
2721
								#設置 $simpleError
2722
								$result["simpleError"]=$getSimpleError["content"];
2723
 
2724
								#回傳結果
2725
								return $result;
2726
 
2727
								}#if end
2728
 
2729
							#函式說明:
2730
							#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2731
							#回傳結果:
2732
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2733
							#$result["error"],錯誤訊息陣列.
2734
							#$result["function"],當前執行的函式名稱.
2735
							#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2736
							#必填參數:
2737
							#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2738
							$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
2739
							#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2740
							$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
2741
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2742
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
2743
 
2744
							#如果要採用的預設值變數存在
2745
							if(isset($conf["varInput"][$spiltedStr["dataArray"][1]])){
2746
 
2747
								#代表該元素的預設值為在檢查參數時自動產生的,因此要透過動態變數取得預設值
2748
								$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["varInput"][$spiltedStr["dataArray"][1]]);
2749
 
2750
								#如果變數後面需要串接內容
2751
								if(isset($spiltedStr["dataArray"][3])){
2752
 
2753
									#串接後面的內容
2754
									$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][0]=$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][0].$spiltedStr["dataArray"][3];
2755
 
2756
									}#if end
2757
 
2758
								}#if end
2759
 
2760
							#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2761
							$argu=&$conf["varInput"];
2762
							#可省略參數:
2763
							$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2764
							unset($conf["variableCheck.checkSkipableVarType"]);
2765
 
2766
							#如果檢查失敗
2767
							if($checkResult["status"]=="false"){
2768
 
2769
								#設置錯誤識別
2770
								$result["status"]="false";
2771
 
2772
								#設置錯誤訊息
2773
								$result["error"]=$checkResult;
2774
 
2775
								#函式說明:
2776
								#取得簡單的錯誤訊息
2777
								#回傳結果:
2778
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2779
								#$result["content"],結果.
2780
								#$result["function"],當前執行的函數
2781
								#$result["error"],涵式錯誤訊息陣列
2782
								#必填參數:
2783
								$conf["variableCheck::getSimpleError"]=array();
2784
								#$conf["error"],陣列,要處理的變數.
2785
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2786
								#可省略參數:
2787
								#無
2788
								#參考資料:
2789
								#無.
2790
								#備註:
2791
								#無.
2792
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2793
								unset($conf["variableCheck::getSimpleError"]);
2794
 
2795
								#如果執行失敗
2796
								if($getSimpleError["status"]==="false"){
226 liveuser 2797
 
3 liveuser 2798
									#設置執行錯誤訊息
2799
									$result["error"][]=$getSimpleError;
226 liveuser 2800
 
3 liveuser 2801
									#回傳結果
2802
									return $result;
2803
 
2804
									}#if end
2805
 
2806
								#設置 $simpleError
2807
								$result["simpleError"]=$getSimpleError["content"];
2808
 
2809
								#回傳結果
2810
								return $result;
226 liveuser 2811
 
3 liveuser 2812
								}#if end
2813
 
2814
							#如果檢查不通過
2815
							if($checkResult["passed"]=="false"){
2816
 
2817
								#設置錯誤識別
2818
								$result["status"]="true";
2819
 
2820
								#設置錯誤識別
2821
								$result["passed"]="false";
2822
 
2823
								#設置錯誤訊息
2824
								$result["error"]=$checkResult;
2825
 
2826
								#函式說明:
2827
								#取得簡單的錯誤訊息
2828
								#回傳結果:
2829
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2830
								#$result["content"],結果.
2831
								#$result["function"],當前執行的函數
2832
								#$result["error"],涵式錯誤訊息陣列
2833
								#必填參數:
2834
								$conf["variableCheck::getSimpleError"]=array();
2835
								#$conf["error"],陣列,要處理的變數.
2836
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2837
								#可省略參數:
2838
								#無
2839
								#參考資料:
2840
								#無.
2841
								#備註:
2842
								#無.
2843
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2844
								unset($conf["variableCheck::getSimpleError"]);
2845
 
2846
								#如果執行失敗
2847
								if($getSimpleError["status"]==="false"){
226 liveuser 2848
 
3 liveuser 2849
									#設置執行錯誤訊息
2850
									$result["error"][]=$getSimpleError;
226 liveuser 2851
 
3 liveuser 2852
									#回傳結果
2853
									return $result;
2854
 
2855
									}#if end
2856
 
2857
								#設置 $simpleError
2858
								$result["simpleError"]=$getSimpleError["content"];
2859
 
2860
								#回傳結果
2861
								return $result;
2862
 
2863
								}#if end
2864
 
2865
							}#if end
2866
 
2867
						#反之 預設值沒有含有 "$"
2868
						else{
2869
 
2870
							#函式說明:
2871
							#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2872
							#回傳結果:
2873
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2874
							#$result["error"],錯誤訊息陣列.
2875
							#$result["function"],當前執行的函式名稱.
2876
							#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2877
							#必填參數:
2878
							#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2879
							$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
2880
							#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2881
							$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
2882
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2883
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
2884
							#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2885
							$argu=&$conf["varInput"];
2886
							#可省略參數:
2887
							$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
2888
							$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2889
							unset($conf["variableCheck.checkSkipableVarType"]);
2890
 
2891
							#如果檢查失敗
2892
							if($checkResult["status"]=="false"){
2893
 
2894
								#設置錯誤識別
2895
								$result["status"]="false";
2896
 
2897
								#設置錯誤訊息
2898
								$result["error"]=$checkResult;
2899
 
2900
								#函式說明:
2901
								#取得簡單的錯誤訊息
2902
								#回傳結果:
2903
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2904
								#$result["content"],結果.
2905
								#$result["function"],當前執行的函數
2906
								#$result["error"],涵式錯誤訊息陣列
2907
								#必填參數:
2908
								$conf["variableCheck::getSimpleError"]=array();
2909
								#$conf["error"],陣列,要處理的變數.
2910
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2911
								#可省略參數:
2912
								#無
2913
								#參考資料:
2914
								#無.
2915
								#備註:
2916
								#無.
2917
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2918
								unset($conf["variableCheck::getSimpleError"]);
2919
 
2920
								#如果執行失敗
2921
								if($getSimpleError["status"]==="false"){
226 liveuser 2922
 
3 liveuser 2923
									#設置執行錯誤訊息
2924
									$result["error"][]=$getSimpleError;
226 liveuser 2925
 
3 liveuser 2926
									#回傳結果
2927
									return $result;
2928
 
2929
									}#if end
2930
 
2931
								#設置 $simpleError
2932
								$result["simpleError"]=$getSimpleError["content"];
2933
 
2934
								#回傳結果
2935
								return $result;
2936
 
2937
								}#if end
2938
 
2939
							#如果檢查不通過
2940
							if($checkResult["passed"]=="false"){
226 liveuser 2941
 
3 liveuser 2942
								#設置執正常
2943
								$result["status"]="true";
226 liveuser 2944
 
3 liveuser 2945
								#設置錯誤識別
2946
								$result["passed"]="false";
2947
 
2948
								#設置錯誤訊息
2949
								$result["error"]=$checkResult;
2950
 
2951
								#函式說明:
2952
								#取得簡單的錯誤訊息
2953
								#回傳結果:
2954
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2955
								#$result["content"],結果.
2956
								#$result["function"],當前執行的函數
2957
								#$result["error"],涵式錯誤訊息陣列
2958
								#必填參數:
2959
								$conf["variableCheck::getSimpleError"]=array();
2960
								#$conf["error"],陣列,要處理的變數.
2961
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2962
								#可省略參數:
2963
								#無
2964
								#參考資料:
2965
								#無.
2966
								#備註:
2967
								#無.
2968
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2969
								unset($conf["variableCheck::getSimpleError"]);
2970
 
2971
								#如果執行失敗
2972
								if($getSimpleError["status"]==="false"){
226 liveuser 2973
 
3 liveuser 2974
									#設置執行錯誤訊息
2975
									$result["error"][]=$getSimpleError;
226 liveuser 2976
 
3 liveuser 2977
									#回傳結果
2978
									return $result;
2979
 
2980
									}#if end
2981
 
2982
								#設置 $simpleError
2983
								$result["simpleError"]=$getSimpleError["content"];
2984
 
2985
								#回傳結果
2986
								return $result;
2987
 
2988
								}#if end
2989
 
2990
							}#else end
2991
 
2992
						}#if end
2993
 
2994
					#反之預設值非字串
2995
					else{
2996
 
2997
						#函式說明:
2998
						#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2999
						#回傳結果:
3000
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3001
						#$result["error"],錯誤訊息陣列.
3002
						#$result["function"],當前執行的函式名稱.
3003
						#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3004
						#必填參數:
3005
						#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
3006
						$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
3007
						#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3008
						$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
3009
						#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3010
						$argu=&$conf["varInput"];
3011
						#可省略參數:
3012
 
3013
						#如果有設定 $conf["skipableVariableType"]
3014
						if(isset($conf["skipableVariableType"])){
3015
 
3016
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3017
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
3018
 
3019
							}#if end
3020
 
3021
						#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,null代表不指定.
3022
						$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
3023
						#var_dump($conf);
3024
						$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3025
						unset($conf["variableCheck.checkSkipableVarType"]);
3026
 
3027
						#如果檢查失敗
3028
						if($checkResult["status"]=="false"){
3029
 
3030
							#設置執行失敗
3031
							$result["status"]="false";
3032
 
3033
							#設置錯誤訊息
3034
							$result["error"]=$checkResult;
3035
 
3036
							#函式說明:
3037
							#取得簡單的錯誤訊息
3038
							#回傳結果:
3039
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3040
							#$result["content"],結果.
3041
							#$result["function"],當前執行的函數
3042
							#$result["error"],涵式錯誤訊息陣列
3043
							#必填參數:
3044
							$conf["variableCheck::getSimpleError"]=array();
3045
							#$conf["error"],陣列,要處理的變數.
3046
							$conf["variableCheck::getSimpleError"]["error"]=$result;
3047
							#可省略參數:
3048
							#無
3049
							#參考資料:
3050
							#無.
3051
							#備註:
3052
							#無.
3053
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3054
							unset($conf["variableCheck::getSimpleError"]);
3055
 
3056
							#如果執行失敗
3057
							if($getSimpleError["status"]==="false"){
226 liveuser 3058
 
3 liveuser 3059
								#設置執行錯誤訊息
3060
								$result["error"][]=$getSimpleError;
226 liveuser 3061
 
3 liveuser 3062
								#回傳結果
3063
								return $result;
3064
 
3065
								}#if end
3066
 
3067
							#設置 $simpleError
3068
							$result["simpleError"]=$getSimpleError["content"];
3069
 
3070
							#回傳結果
3071
							return $result;
3072
 
3073
							}#if end
3074
 
3075
						#如果檢查不通過
3076
						if($checkResult["passed"]=="false"){
3077
 
3078
							#設置執正常
3079
							$result["status"]="true";
226 liveuser 3080
 
3 liveuser 3081
							#設置錯誤識別
3082
							$result["passed"]="false";
3083
 
3084
							#設置錯誤訊息
3085
							$result["error"]=$checkResult;
3086
 
3087
							#函式說明:
3088
							#取得簡單的錯誤訊息
3089
							#回傳結果:
3090
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3091
							#$result["content"],結果.
3092
							#$result["function"],當前執行的函數
3093
							#$result["error"],涵式錯誤訊息陣列
3094
							#必填參數:
3095
							$conf["variableCheck::getSimpleError"]=array();
3096
							#$conf["error"],陣列,要處理的變數.
3097
							$conf["variableCheck::getSimpleError"]["error"]=$result;
3098
							#可省略參數:
3099
							#無
3100
							#參考資料:
3101
							#無.
3102
							#備註:
3103
							#無.
3104
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3105
							unset($conf["variableCheck::getSimpleError"]);
3106
 
3107
							#如果執行失敗
3108
							if($getSimpleError["status"]==="false"){
226 liveuser 3109
 
3 liveuser 3110
								#設置執行錯誤訊息
3111
								$result["error"][]=$getSimpleError;
226 liveuser 3112
 
3 liveuser 3113
								#回傳結果
3114
								return $result;
3115
 
3116
								}#if end
3117
 
3118
							#設置 $simpleError
3119
							$result["simpleError"]=$getSimpleError["content"];
3120
 
3121
							#回傳結果
3122
							return $result;
3123
 
3124
							}#if end
3125
 
3126
						}#else end
3127
 
3128
					}#if end
3129
 
3130
				#反之沒有設定預設值
3131
				else{
3132
 
3133
					#函式說明:
3134
					#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
3135
					#回傳結果:
3136
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3137
					#$result["error"],錯誤訊息陣列.
3138
					#$result["function"],當前執行的函式名稱.
3139
					#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3140
					#必填參數:
3141
					#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
3142
					$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
3143
					#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3144
					$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
3145
					#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3146
					$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
3147
					#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3148
					$argu=&$conf["varInput"];
3149
					#可省略參數:
3150
					#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
3151
					$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3152
					unset($conf["variableCheck.checkSkipableVarType"]);
3153
 
3154
					#如果檢查失敗
3155
					if($checkResult["status"]=="false"){
3156
 
3157
						#設置錯誤識別
3158
						$result["status"]="false";
3159
 
3160
						#設置錯誤訊息
3161
						$result["error"]=$checkResult;
3162
 
3163
						#函式說明:
3164
						#取得簡單的錯誤訊息
3165
						#回傳結果:
3166
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3167
						#$result["content"],結果.
3168
						#$result["function"],當前執行的函數
3169
						#$result["error"],涵式錯誤訊息陣列
3170
						#必填參數:
3171
						$conf["variableCheck::getSimpleError"]=array();
3172
						#$conf["error"],陣列,要處理的變數.
3173
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3174
						#可省略參數:
3175
						#無
3176
						#參考資料:
3177
						#無.
3178
						#備註:
3179
						#無.
3180
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3181
						unset($conf["variableCheck::getSimpleError"]);
3182
 
3183
						#如果執行失敗
3184
						if($getSimpleError["status"]==="false"){
226 liveuser 3185
 
3 liveuser 3186
							#設置執行錯誤訊息
3187
							$result["error"][]=$getSimpleError;
226 liveuser 3188
 
3 liveuser 3189
							#回傳結果
3190
							return $result;
3191
 
3192
							}#if end
3193
 
3194
						#設置 $simpleError
3195
						$result["simpleError"]=$getSimpleError["content"];
3196
 
3197
						#回傳結果
3198
						return $result;
3199
 
3200
						}#if end
3201
 
3202
					#如果檢查不通過
3203
					if($checkResult["passed"]=="false"){
3204
 
3205
						#設置執正常
3206
						$result["status"]="true";
226 liveuser 3207
 
3 liveuser 3208
						#設置錯誤識別
3209
						$result["passed"]="false";
3210
 
3211
						#設置錯誤訊息
3212
						$result["error"]=$checkResult;
3213
 
3214
						#函式說明:
3215
						#取得簡單的錯誤訊息
3216
						#回傳結果:
3217
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3218
						#$result["content"],結果.
3219
						#$result["function"],當前執行的函數
3220
						#$result["error"],涵式錯誤訊息陣列
3221
						#必填參數:
3222
						$conf["variableCheck::getSimpleError"]=array();
3223
						#$conf["error"],陣列,要處理的變數.
3224
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3225
						#可省略參數:
3226
						#無
3227
						#參考資料:
3228
						#無.
3229
						#備註:
3230
						#無.
3231
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3232
						unset($conf["variableCheck::getSimpleError"]);
3233
 
3234
						#如果執行失敗
3235
						if($getSimpleError["status"]==="false"){
226 liveuser 3236
 
3 liveuser 3237
							#設置執行錯誤訊息
3238
							$result["error"][]=$getSimpleError;
226 liveuser 3239
 
3 liveuser 3240
							#回傳結果
3241
							return $result;
3242
 
3243
							}#if end
3244
 
3245
						#設置 $simpleError
3246
						$result["simpleError"]=$getSimpleError["content"];
3247
 
3248
						#回傳結果
3249
						return $result;
3250
 
3251
						}#if end
3252
 
3253
					}#else end
3254
 
3255
				}#for end
3256
 
3257
			}#if end
3258
 
3259
		#如果 $conf["arrayCountEqualCheck"] 存在
3260
		if(isset($conf["arrayCountEqualCheck"])){
3261
 
3262
			#$conf["arrayCountEqualCheck"]有幾組元素就執行幾次
3263
			for($i=0;$i<count($conf["arrayCountEqualCheck"]);$i++){
3264
 
3265
				#初始化暫存元素數量的陣列
3266
				$tempEqualCount=array();
3267
 
3268
				#該組有幾個元素就執行幾次
3269
				for($j=0;$j<count($conf["arrayCountEqualCheck"][$i]);$j++){
3270
 
3271
					#如果要判斷元素數量是否一致的變數陣列存在
3272
					if(isset($conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]])){
3273
 
3274
						#儲存該組該變數的元素數量
3275
						$tempEqualCount[]=count($conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]]);
3276
 
3277
						}#if end
3278
 
3279
					}#for end
3280
 
3281
				#如果該組只有一個元素數量資料
3282
				if(count($tempEqualCount)==0){
3283
 
3284
					#跳出迴圈
3285
					break;
3286
 
3287
					}#if end
3288
 
3289
				#看 $tempEqualCount 中的元素計數是否都一樣
3290
				#$tempEqualCount 有幾個元素就執行幾次
3291
				for($j=1;$j<count($tempEqualCount);$j++){
3292
 
3293
					#如果跟第一個變數的元素數量不一樣
3294
					if($tempEqualCount[0]!=$tempEqualCount[$j]){
3295
 
3296
						#設置執正常
3297
						$result["status"]="true";
226 liveuser 3298
 
3 liveuser 3299
						#設置錯誤識別
3300
						$result["passed"]="false";
3301
 
3302
						#設置錯誤訊息
3303
						$result["error"][]="key為".$conf["arrayCountEqualCheck"][$i][0]."與".$conf["arrayCountEqualCheck"][$i][$j]."的參數其元數數量不一致";
3304
 
3305
						#設置錯誤訊息
3306
						$result["error"][]=array("key為".$conf["arrayCountEqualCheck"][$i][0]."的參數",$conf["varInput"][$conf["arrayCountEqualCheck"][$i][0]]);
3307
 
3308
						#設置錯誤訊息
3309
						$result["error"][]=array("key為".$conf["arrayCountEqualCheck"][$i][$j]."的參數",$conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]]);
3310
 
3311
						#函式說明:
3312
						#取得簡單的錯誤訊息
3313
						#回傳結果:
3314
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3315
						#$result["content"],結果.
3316
						#$result["function"],當前執行的函數
3317
						#$result["error"],涵式錯誤訊息陣列
3318
						#必填參數:
3319
						$conf["variableCheck::getSimpleError"]=array();
3320
						#$conf["error"],陣列,要處理的變數.
3321
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3322
						#可省略參數:
3323
						#無
3324
						#參考資料:
3325
						#無.
3326
						#備註:
3327
						#無.
3328
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3329
						unset($conf["variableCheck::getSimpleError"]);
3330
 
3331
						#如果執行失敗
3332
						if($getSimpleError["status"]==="false"){
226 liveuser 3333
 
3 liveuser 3334
							#設置執行錯誤訊息
3335
							$result["error"][]=$getSimpleError;
226 liveuser 3336
 
3 liveuser 3337
							#回傳結果
3338
							return $result;
3339
 
3340
							}#if end
3341
 
3342
						#設置 $simpleError
3343
						$result["simpleError"]=$getSimpleError["content"];
3344
 
3345
						#回傳結果
3346
						return $result;
3347
 
3348
						}#if end
3349
 
3350
					}#for end
3351
 
3352
				}#for end
3353
 
3354
			}#if end
3355
 
3356
		#初始化儲存所有參數名稱的陣列
3357
		$arguArray=array();
3358
 
3359
		#如果有要必填的參數名稱
3360
		if(isset($conf["mustBeFilledVariableName"])){
3361
 
3362
			#記錄必填的參數
3363
			$arguArray=$conf["mustBeFilledVariableName"];
3364
 
3365
			}#if end
3366
 
3367
		#若有可省略的參數
3368
		if(isset($conf["skipableVariableName"])){
3369
 
3370
			#有幾個可省略參數就執行幾次
3371
			for($i=0;$i<count($conf["skipableVariableName"]);$i++){
3372
 
3373
				#記錄參數
3374
				$arguArray[]=$conf["skipableVariableName"][$i];
3375
 
3376
				}#for end
3377
 
3378
			}#if end
226 liveuser 3379
 
3380
		#如果有可省略變數的any形態變數設定
3 liveuser 3381
		if(isset($anyTypeVarName)){
226 liveuser 3382
 
3 liveuser 3383
			#針對每個可省略的any形態變數
3384
			foreach($anyTypeVarName as $varName){
226 liveuser 3385
 
3 liveuser 3386
				#記錄參數
3387
				$arguArray[]=$varName;
226 liveuser 3388
 
3 liveuser 3389
				}#foreach end
226 liveuser 3390
 
3 liveuser 3391
			}#if end
3392
 
3393
		#初始化儲存已經輸入的參數名稱陣列
3394
		$inputVarArray=array();
3395
 
3396
		#移除不要的參考陣列
3397
		unset($conf["varInput"][$conf["referenceVarKey"]]);
3398
 
3399
		#有幾個輸入的參數就執行幾次
3400
		foreach($conf["varInput"] as $key=>$value ){
3401
 
3402
			#儲存參數的名稱
3403
			$inputVarArray[]=$key;
3404
 
3405
			}#foreach end
3406
 
3407
		#有幾個輸入的參數就執行幾次
3408
		for($i=0;$i<count($inputVarArray);$i++){
3409
 
3410
			#初始化是否有找到對應的必填或可省參數
3411
			$matched="false";
3412
 
3413
			#檢查該輸入的參數是否應該存在
3414
			for($j=0;$j<count($arguArray);$j++){
3415
 
3416
				#如果該輸入的參數屬於應該要有的參數
3417
				if($inputVarArray[$i]==$arguArray[$j]){
3418
 
3419
					#設置有找到對應的必填或可省參數
3420
					$matched="true";
3421
 
3422
					}#if end
3423
 
3424
				}#for end
3425
 
3426
			#如果對照了所有必填與可省略參數都沒有找到一樣的參數名稱
3427
			if($matched=="false"){
3428
 
3429
				#記錄目前輸入的參數名稱陣列
3430
				$result["argu"]=$inputVarArray;
3431
 
3432
				#記錄合法可用的參數名稱陣列.
3433
				$result["legalVarName"]=$arguArray;
3434
 
3435
				#記錄不應該存在的參數名稱
3436
				$result["notNeedVar"][]=$inputVarArray[$i];
3437
 
3438
				}#if end
3439
 
3440
			}#for end
3441
 
3442
		#如果有不應該存在的參數名稱
3443
		if(isset($result["notNeedVar"])){
3444
 
3445
			#設置錯誤識別
3446
			$result["status"]="true";
3447
 
3448
			#設置檢查不通過
3449
			$result["passed"]="false";
3450
 
3451
			#設置錯誤訊息
3452
			$result["error"]="發現「".count($result["notNeedVar"])."」個多餘的參數";
3453
 
3454
			#函式說明:
3455
			#取得簡單的錯誤訊息
3456
			#回傳結果:
3457
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3458
			#$result["content"],結果.
3459
			#$result["function"],當前執行的函數
3460
			#$result["error"],涵式錯誤訊息陣列
3461
			#必填參數:
3462
			$conf["variableCheck::getSimpleError"]=array();
3463
			#$conf["error"],陣列,要處理的變數.
3464
			$conf["variableCheck::getSimpleError"]["error"]=$result;
3465
			#可省略參數:
3466
			#無
3467
			#參考資料:
3468
			#無.
3469
			#備註:
3470
			#無.
3471
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3472
			unset($conf["variableCheck::getSimpleError"]);
3473
 
3474
			#如果執行失敗
3475
			if($getSimpleError["status"]==="false"){
226 liveuser 3476
 
3 liveuser 3477
				#設置執行錯誤訊息
3478
				$result["error"][]=$getSimpleError;
226 liveuser 3479
 
3 liveuser 3480
				#回傳結果
3481
				return $result;
3482
 
3483
				}#if end
3484
 
3485
			#設置 $simpleError
3486
			$result["simpleError"]=$getSimpleError["content"];
3487
 
3488
			#回傳結果
3489
			return $result;
3490
 
3491
			}#if end
3492
 
3493
		#初始化儲存沒有符合規定的參數訊息
3494
		$result["shouldNotBeEmpty"]=array();
3495
 
3496
		#如果有設定 $conf["skipableVariableCanNotBeEmpty"]
3497
		if(isset($conf["skipableVariableCanNotBeEmpty"])){
3498
 
3499
			#針對每個不能為空值跟空集合的變數名稱
3500
			foreach($conf["skipableVariableCanNotBeEmpty"] as $varName){
3501
 
3502
				#如果可省略變數 $varName 存在
3503
				if(isset($conf["varInput"][$varName])){
3504
 
3505
					#如果其為 空字串 或 空陣列
3506
					if($conf["varInput"][$varName]==""){
3507
 
3508
						#記錄沒有符合規定的參數訊息
3509
						$result["shouldNotBeEmpty"][]="參數「".$varName."」不得為空字串";
3510
 
3511
						}#if end
3512
 
3513
					#反之如果為陣列
3514
					else if(gettype($conf["varInput"][$varName])==="array"){
3515
 
3516
						#如果為空陣列
3517
						if(count($conf["varInput"][$varName])===0){
3518
 
3519
							#記錄沒有符合規定的參數訊息
3520
							$result["shouldNotBeEmpty"][]="參數「".$varName."」不得為空集合";
3521
 
3522
							}#if end
3523
 
3524
						}#else end
3525
 
3526
					}#if end
3527
 
3528
				}#foreach end
3529
 
3530
			#如果 $result["shouldNotBeEmpty"] 存在元素
3531
			if(count($result["shouldNotBeEmpty"])>0){
3532
 
3533
				#設置錯誤識別
3534
				$result["status"]="true";
3535
 
3536
				#設置檢查不通過
3537
				$result["passed"]="false";
3538
 
3539
				#函式說明:
3540
				#取得簡單的錯誤訊息
3541
				#回傳結果:
3542
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3543
				#$result["content"],結果.
3544
				#$result["function"],當前執行的函數
3545
				#$result["error"],涵式錯誤訊息陣列
3546
				#必填參數:
3547
				$conf["variableCheck::getSimpleError"]=array();
3548
				#$conf["error"],陣列,要處理的變數.
3549
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3550
				#可省略參數:
3551
				#無
3552
				#參考資料:
3553
				#無.
3554
				#備註:
3555
				#無.
3556
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3557
				unset($conf["variableCheck::getSimpleError"]);
3558
 
3559
				#如果執行失敗
3560
				if($getSimpleError["status"]==="false"){
226 liveuser 3561
 
3 liveuser 3562
					#設置執行錯誤訊息
3563
					$result["error"][]=$getSimpleError;
226 liveuser 3564
 
3 liveuser 3565
					#回傳結果
3566
					return $result;
3567
 
3568
					}#if end
3569
 
3570
				#設置 $simpleError
3571
				$result["simpleError"]=$getSimpleError["content"];
3572
 
3573
				#回傳結果
3574
				return $result;
3575
 
3576
				}#if end
3577
 
3578
			}#if end
3579
 
3580
		#如果有設定可省略參數且不允許所有可省略變數都不存在
3581
		if( isset($conf["skipableVariableName"]) && ($conf["disallowAllSkipableVarNotExist"]==="true") ){
226 liveuser 3582
 
3 liveuser 3583
			#函式說明:
3584
			#檢查多個字串中的每個字串是否有多個關鍵字
3585
			#回傳結果:
3586
			#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
3587
			#$result["function"],當前執行的函數名稱.
3588
			#$result["error"],錯誤訊息.
3589
			#$result["argu"],使用的參數.
3590
			#$result["foundedTrueKey"],結果為"true"的被搜尋元素key陣列,與其數值內容.
3591
			#$result["foundedKeyWords"],找到的關鍵字陣列.
3592
			#$result["foundedFalseKey"],結果為"false"的被搜尋元素key陣列,與其數值內容.
3593
			#$result["foundedTrueKeyWords"],二維陣列,各個字串有找到的關鍵字陣列.
3594
			#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
3595
			#必填參數:
3596
			#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
3597
			$conf["search::findManyKeyWordsFromManyString"]["keyWords"]=$conf["skipableVariableName"];
3598
			#$conf["stringArray"],字串陣列,要被搜尋的字串內容陣列.
3599
			$conf["search::findManyKeyWordsFromManyString"]["stringArray"]=array_keys($conf["varInput"]);
3600
			#可省略參數:
3601
			#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為"false"不需要完全符合.
3602
			#$conf["completeEqual"]="true";
3603
			#參考資料:
3604
			#無.
3605
			#備註:
3606
			#無.
3607
			$findManyKeyWordsFromManyString=search::findManyKeyWordsFromManyString($conf["search::findManyKeyWordsFromManyString"]);
3608
			unset($conf["search::findManyKeyWordsFromManyString"]);
226 liveuser 3609
 
3 liveuser 3610
			#如果執行失敗
3611
			if($findManyKeyWordsFromManyString["status"]==="false"){
226 liveuser 3612
 
3 liveuser 3613
				#設置錯誤識別
3614
				$result["status"]="false";
3615
 
3616
				#設置檢查不通過
3617
				$result["passed"]="false";
226 liveuser 3618
 
3 liveuser 3619
				#設置執行錯誤訊息
3620
				$result["error"]=$findManyKeyWordsFromManyString;
3621
 
3622
				#函式說明:
3623
				#取得簡單的錯誤訊息
3624
				#回傳結果:
3625
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3626
				#$result["content"],結果.
3627
				#$result["function"],當前執行的函數
3628
				#$result["error"],涵式錯誤訊息陣列
3629
				#必填參數:
3630
				$conf["variableCheck::getSimpleError"]=array();
3631
				#$conf["error"],陣列,要處理的變數.
3632
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3633
				#可省略參數:
3634
				#無
3635
				#參考資料:
3636
				#無.
3637
				#備註:
3638
				#無.
3639
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3640
				unset($conf["variableCheck::getSimpleError"]);
3641
 
3642
				#如果執行失敗
3643
				if($getSimpleError["status"]==="false"){
226 liveuser 3644
 
3 liveuser 3645
					#設置執行錯誤訊息
3646
					$result["error"][]=$getSimpleError;
226 liveuser 3647
 
3 liveuser 3648
					#回傳結果
3649
					return $result;
3650
 
3651
					}#if end
3652
 
3653
				#設置 $simpleError
3654
				$result["simpleError"]=$getSimpleError["content"];
3655
 
3656
				#回傳結果
3657
				return $result;
226 liveuser 3658
 
3 liveuser 3659
				}#if end
226 liveuser 3660
 
3 liveuser 3661
			#如果沒有找到至少一個可省略參數存在
3662
			if(count($findManyKeyWordsFromManyString["foundedTrueKey"])===0){
226 liveuser 3663
 
3 liveuser 3664
				#設置執行正常
3665
				$result["status"]="true";
3666
 
3667
				#設置檢查不通過
3668
				$result["passed"]="false";
226 liveuser 3669
 
3 liveuser 3670
				#設置執行錯誤訊息
3671
				$result["error"]=$findManyKeyWordsFromManyString;
3672
 
3673
				#函式說明:
3674
				#取得簡單的錯誤訊息
3675
				#回傳結果:
3676
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3677
				#$result["content"],結果.
3678
				#$result["function"],當前執行的函數
3679
				#$result["error"],涵式錯誤訊息陣列
3680
				#必填參數:
3681
				$conf["variableCheck::getSimpleError"]=array();
3682
				#$conf["error"],陣列,要處理的變數.
3683
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3684
				#可省略參數:
3685
				#無
3686
				#參考資料:
3687
				#無.
3688
				#備註:
3689
				#無.
3690
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3691
				unset($conf["variableCheck::getSimpleError"]);
3692
 
3693
				#如果執行失敗
3694
				if($getSimpleError["status"]==="false"){
226 liveuser 3695
 
3 liveuser 3696
					#設置執行錯誤訊息
3697
					$result["error"][]=$getSimpleError;
226 liveuser 3698
 
3 liveuser 3699
					#回傳結果
3700
					return $result;
3701
 
3702
					}#if end
3703
 
3704
				#設置 $simpleError
3705
				$result["simpleError"]=$getSimpleError["content"];
3706
 
3707
				#回傳結果
3708
				return $result;
226 liveuser 3709
 
3 liveuser 3710
				}#if end
226 liveuser 3711
 
3 liveuser 3712
			}#if end
3713
 
396 liveuser 3714
		#如果有設置 arrayCount 參數
3715
		if(isset($conf["arrayCount"])){
3716
 
3717
			#針對每個 arrayCount 參數的元素
3718
			foreach($conf["arrayCount"] as $index => $info){
3719
 
3720
				#如果元素不為陣列
3721
				if(gettype($info)!=="array"){
3722
 
3723
					#設置執行正常
3724
					$result["status"]="true";
3725
 
3726
					#設置檢查不通過
3727
					$result["passed"]="false";
3728
 
3729
					#設置執行錯誤訊息
3730
					$result["error"][]="number of element of arrayCount of parmas should be 2";
3731
 
3732
					#回傳結果
3733
					return $result;
3734
 
3735
					}#if end
3736
 
3737
				#取得變數名稱
3738
				$varName=$info[0];
3739
 
3740
				#取得元素的規定數量
3741
				$elementCount=$info[1];
3742
 
3743
				#如果要求檢查元素數量的陣列參數不存在
3744
				if(!isset($conf["arrayCount"][$varName])){
3745
 
3746
					#設置執行正常
3747
					$result["status"]="true";
3748
 
3749
					#設置檢查不通過
3750
					$result["passed"]="false";
3751
 
3752
					#設置執行錯誤訊息
3753
					$result["error"][]="params of ".$varName." to check element count not found";
3754
 
3755
					#回傳結果
3756
					return $result;
3757
 
3758
					}#if end
3759
 
3760
				#如果要檢查的變數不為陣列
3761
				if(gettype($conf["arrayCount"][$varName])==="array"){
3762
 
3763
					#設置執行正常
3764
					$result["status"]="true";
3765
 
3766
					#設置檢查不通過
3767
					$result["passed"]="false";
3768
 
3769
					#設置執行錯誤訊息
3770
					$result["error"][]="params of ".$varName." to check element count should be array";
3771
 
3772
					#回傳結果
3773
					return $result;
3774
 
3775
					}#if end
3776
 
3777
				#如果陣列參數的元素數量不為 $elementCount
3778
				if(count($conf["arrayCount"][$varName])!==$elementCount){
3779
 
3780
					#設置執行正常
3781
					$result["status"]="true";
3782
 
3783
					#設置檢查不通過
3784
					$result["passed"]="false";
3785
 
3786
					#設置執行錯誤訊息
3787
					$result["error"][]="element count of params of ".$varName." should be ".$elementCount;
3788
 
3789
					#回傳結果
3790
					return $result;
3791
 
3792
					}#if end
3793
 
3794
				}#foreach end
3795
 
3796
			}#if end
3797
 
3 liveuser 3798
		#設置執行正常
3799
		$result["status"]="true";
3800
 
3801
		#設置錯誤識別
3802
		$result["passed"]="true";
3803
 
3804
		#回傳結果
3805
		return $result;
3806
 
3807
		}#function checkArguments end
3808
 
3809
	/*
3810
	#函式說明:
3811
	#檢查一陣列變數是否為空陣列
3812
	#回傳結果:
3813
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3814
	#$result["content"],結果陣列.
3815
	#$result["function"],當前執行的函數
3816
	#$result["error"],涵式錯誤訊息陣列
3817
	#$result["empty"],"true"代表為空陣列,"false"代表不為空陣列.
3818
	#必填參數:
3819
	#$conf["var"],陣列變數.
3820
	$conf["var"]=;
3821
	#可省略參數:
3822
	#無.
3823
	#參考資料:
3824
	#無.
3825
	#備註:
3826
	#無.
3827
	*/
3828
	public static function emptyArray(&$conf){
3829
 
3830
		#初始化要回傳的結果
3831
		$result=array();
3832
 
3833
		#取得當前執行的函數名稱
3834
		$result["function"]=__FUNCTION__;
3835
 
3836
		#如果沒有參數
3837
		if(func_num_args()==0){
3838
 
3839
			#設置執行失敗
3840
			$result["status"]="false";
3841
 
3842
			#設置執行錯誤訊息
3843
			$result["error"]="函數".$result["function"]."需要參數";
3844
 
3845
			#回傳結果
3846
			return $result;
3847
 
3848
			}#if end
3849
 
3850
		#取得參數
3851
		$result["argu"]=$conf;
3852
 
3853
		#如果 $conf 不為陣列
3854
		if(gettype($conf)!=="array"){
3855
 
3856
			#設置執行失敗
3857
			$result["status"]="false";
3858
 
3859
			#設置執行錯誤訊息
3860
			$result["error"][]="\$conf變數須為陣列形態";
3861
 
3862
			#如果傳入的參數為 null
3863
			if($conf===null){
3864
 
3865
				#設置執行錯誤訊息
3866
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3867
 
3868
				}#if end
3869
 
3870
			#回傳結果
3871
			return $result;
3872
 
3873
			}#if end
3874
 
3875
		#檢查參數
3876
		#函式說明:
3877
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3878
		#回傳結果:
3879
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3880
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3881
		#$result["function"],當前執行的函式名稱.
3882
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3883
		#$result["warning"],警告訊息
3884
		#$result["content"][$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3885
		#$result["content"][$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3886
		#$result["content"][$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3887
		#必填參數:
3888
		$conf["variableCheck::isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3889
		$conf["variableCheck::isexistMulti"]["variableCheck"]=array("var");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3890
		#可省略參數:
3891
		$conf["variableCheck::isexistMulti"]["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); ,null代表沒有指定變數形態.
3892
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置.
3893
		#$conf["cnaBeEmpty"],陣列,可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"false"時生效.
3894
		#$conf["cnaBeEmpty"]=array();
3895
		#$conf["cnaNotBeEmpty"],陣列,不可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"true"時生效.
3896
		#$conf["cnaNotBeEmpty"]=array();
3897
		$isexistMulti=variableCheck::isexistMulti($conf["variableCheck::isexistMulti"]);
3898
		unset($conf["variableCheck::isexistMulti"]);
3899
 
3900
		#如果檢查變數失敗
3901
		if($isexistMulti["status"]==="false"){
3902
 
3903
			#設置執行失敗
3904
			$result["status"]="false";
3905
 
3906
			#設置執行錯誤訊息
3907
			$result["error"]=$isexistMulti;
3908
 
3909
			#回傳結果
3910
			return $result;
3911
 
3912
			}#if end
3913
 
3914
		#如果檢查變數不通過
3915
		if($isexistMulti["passed"]==="false"){
3916
 
3917
			#設置執行失敗
3918
			$result["status"]="false";
3919
 
3920
			#設置執行錯誤訊息
3921
			$result["error"]=$isexistMulti;
3922
 
3923
			#回傳結果
3924
			return $result;
3925
 
3926
			}#if end
3927
 
3928
		#如果裡面有內容
3929
		if(count($conf["var"])!==0){
3930
 
3931
			#針對每個內容
3932
			foreach($conf["var"] as $var){
3933
 
3934
				#如果內容不是陣列
3935
				if(gettype($var)!=="array"){
3936
 
3937
					#設置執行失敗
3938
					$result["status"]="true";
3939
 
3940
					#設置不為空陣列
3941
					$result["empty"]="false";
3942
 
3943
					#回傳結果
3944
					return $result;
3945
 
3946
					}#if end
3947
 
3948
				#反之是陣列
3949
				else{
3950
 
3951
					#呼叫自己
3952
					$conf["variableCheck::emptyArray"]["var"]=$var;
3953
					$emptyArray=variableCheck::emptyArray($conf["variableCheck::emptyArray"]);
3954
					unset($conf["variableCheck::emptyArray"]);
3955
 
3956
					#如果執行失敗
3957
					if($emptyArray["status"]==="false"){
3958
 
3959
						#設置執行失敗
3960
						$result["status"]="false";
3961
 
3962
						#設置執行錯誤訊息
3963
						$result["error"]=$emptyArray;
3964
 
3965
						#回傳結果
3966
						return $result;
3967
 
3968
						}#if end
3969
 
3970
					#如果不是空陣列
3971
					if($emptyArray["empty"]==="false"){
3972
 
3973
						#設置執行失敗
3974
						$result["status"]="true";
3975
 
3976
						#設置不為空陣列
3977
						$result["empty"]="false";
3978
 
3979
						#回傳結果
3980
						return $result;
3981
 
3982
						}#if end
3983
 
3984
					}#else end
3985
 
3986
				}#foreach end
3987
 
3988
			#設置執行正常
3989
			$result["status"]="true";
3990
 
3991
			#設置為空陣列
3992
			$result["empty"]="true";
3993
 
3994
			#回傳結果
3995
			return $result;
3996
 
3997
 
3998
			}#if end
3999
 
4000
		#反之為空陣列
4001
		else{
4002
 
4003
			#設置執行正常
4004
			$result["status"]="true";
4005
 
4006
			#設置為空陣列
4007
			$result["empty"]="true";
4008
 
4009
			#回傳結果
4010
			return $result;
4011
 
4012
			}#else end
4013
 
4014
		}#function emptyArray end
4015
 
4016
	/*
4017
	#函式說明:
4018
	#回傳變數的解析結果.
4019
	#回傳結果:
4020
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4021
	#$result["content"],變數的解析結果.
4022
	#$result["function"],當前執行的函數
4023
	#$result["error"],涵式錯誤訊息陣列
4024
	#必填參數:
4025
	#$conf["var"],any,任意內容,通常為變數.
4026
	$conf["var"]=;
4027
	#可省略參數:
4028
	#無.
4029
	#參考資料:
4030
	#無.
4031
	#備註:
4032
	#無.
4033
	*/
4034
	public static function toSource(&$conf){
226 liveuser 4035
 
3 liveuser 4036
		#初始化要回傳的內容
4037
		$result=array();
4038
 
4039
		#取得當前執行的函數名稱
4040
		$result["function"]=__FUNCTION__;
4041
 
4042
		#如果 $conf 不為陣列
4043
		if(gettype($conf)!="array"){
226 liveuser 4044
 
3 liveuser 4045
			#設置執行失敗
4046
			$result["status"]="false";
226 liveuser 4047
 
3 liveuser 4048
			#設置執行錯誤訊息
4049
			$result["error"][]="\$conf變數須為陣列形態";
4050
 
4051
			#如果傳入的參數為 null
4052
			if($conf==null){
226 liveuser 4053
 
3 liveuser 4054
				#設置執行錯誤訊息
4055
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4056
 
3 liveuser 4057
				}#if end
4058
 
4059
			#回傳結果
4060
			return $result;
226 liveuser 4061
 
3 liveuser 4062
			}#if end
226 liveuser 4063
 
3 liveuser 4064
		#檢查參數
4065
		#函式說明:
4066
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4067
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4068
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4069
		#$result["function"],當前執行的函式名稱.
4070
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4071
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4072
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4073
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
4074
		#必填寫的參數:
4075
		#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4076
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
4077
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4078
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("var");
226 liveuser 4079
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 4080
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array(null);
4081
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4082
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
4083
		#可以省略的參數:
4084
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
4085
		#$conf["canBeEmptyString"]="false";
4086
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4087
		#$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("varPassed");
226 liveuser 4088
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4089
		#$conf["variableCheck.checkArguments"]["skipableVariableType"]=array(null);
4090
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4091
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null);
4092
		$checkArguments=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
4093
		unset($conf["variableCheck.checkArguments"]);
226 liveuser 4094
 
3 liveuser 4095
		#如果 檢查參數 失敗
4096
		if($checkArguments["status"]==="false"){
226 liveuser 4097
 
3 liveuser 4098
			#設置執行不正常
4099
			$result["status"]="false";
226 liveuser 4100
 
3 liveuser 4101
			#設置執行錯誤
4102
			$result["error"]=$checkArguments;
226 liveuser 4103
 
3 liveuser 4104
			#回傳節果
4105
			return $result;
226 liveuser 4106
 
3 liveuser 4107
			}#if end
226 liveuser 4108
 
3 liveuser 4109
		#如果 檢查參數 不通過
4110
		if($checkArguments["passed"]==="false"){
226 liveuser 4111
 
3 liveuser 4112
			#設置執行不正常
4113
			$result["status"]="false";
226 liveuser 4114
 
3 liveuser 4115
			#設置執行錯誤
4116
			$result["error"]=$checkArguments;
226 liveuser 4117
 
3 liveuser 4118
			#回傳節果
4119
			return $result;
226 liveuser 4120
 
3 liveuser 4121
			}#if end
226 liveuser 4122
 
3 liveuser 4123
		#函式說明:
4124
		#記錄程式輸出的結果.
4125
		#回傳結果:
4126
		#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4127
		#$result["error"],錯誤訊息.
4128
		#$result["content"],程式的輸出.
4129
		#$result["function"],當前執行的涵式
4130
		#必填參數:
4131
		#$conf["code2run"],字串陣列,爲要運行的程式內容,每個元素代表一段php程式.內容不必含有php tag,但結尾必須為「;」.
4132
		$conf["record::getOutput"]["code2run"]=array("var_dump(\$varPassed[0]);");
4133
		#可省略參數:
4134
		#可省略參數:
4135
		#$conf["varPassed"],陣列,為要使用到的變數,在code2run參數裡面"\$varPassed[n]"代表第n+1個變數.
4136
		$conf["record::getOutput"]["varPassed"]=array($conf["var"]);
4137
		#參考資料:
4138
		#無.
4139
		#備註:
4140
		#無.
4141
		$getOutput=record::getOutput($conf["record::getOutput"]);
4142
		unset($conf["record::getOutput"]);
226 liveuser 4143
 
3 liveuser 4144
		#如果執行失敗
4145
		if($getOutput["status"]==="false"){
226 liveuser 4146
 
3 liveuser 4147
			#設置錯誤識別
4148
			$result["status"]="false";
226 liveuser 4149
 
3 liveuser 4150
			#設置錯誤訊息
4151
			$result["error"]=$getOutput;
226 liveuser 4152
 
3 liveuser 4153
			#回傳結果
4154
			return $result;
226 liveuser 4155
 
3 liveuser 4156
			}#if end
226 liveuser 4157
 
3 liveuser 4158
		#取得輸出
4159
		$result["content"]=$getOutput["content"];
226 liveuser 4160
 
3 liveuser 4161
		#設置執行正常
4162
		$result["status"]="true";
226 liveuser 4163
 
3 liveuser 4164
		#回傳結果
4165
		return $result;
226 liveuser 4166
 
3 liveuser 4167
		}#functino toSource end
4168
 
4169
	/*
4170
	#函式說明:
4171
	#隱藏元素中可能含有機密的內容.
4172
	#回傳結果:
4173
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4174
	#$result["content"],隱藏內容後的結果.
4175
	#$result["function"],當前執行的函數
4176
	#$result["error"],涵式錯誤訊息陣列
4177
	#必填參數:
4178
	#$conf["params"],陣列,要處理的變數.
4179
	$conf["params"]=;
4180
	#可省略參數:
4181
	#$conf["keyWords"],字串陣列,針對params中每一個的key,若擁有該陣列中任一元素的數值(關鍵字),則要將其內容隱藏,預設為array("password","key","secret").
4182
	#$conf["keyWords"]=array("password","key","secret","Secret");
4183
	#$conf["changeTo"],字串,將要隱藏的參數內容置換為什麼字串內容,預設為"[classified content]".
4184
	#$conf["changeTo"]="[classified content]";
4185
	#參考資料:
4186
	#無.
4187
	#備註:
4188
	#目前不支援物件.
4189
	*/
4190
	public static function hideParams(&$conf){
226 liveuser 4191
 
3 liveuser 4192
		#取得當前執行的函式
4193
		$result["function"]=__FUNCTION__;
4194
 
4195
		#取得使用的參數
4196
		$result["argu"]=$conf;
4197
 
4198
		#函式說明:
4199
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4200
		#回傳結果:
4201
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4202
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4203
		#$result["function"],當前執行的函式名稱.
4204
		#$result["argu"],設置給予的參數.
4205
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4206
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4207
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4208
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4209
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4210
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4211
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4212
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4213
		#必填參數:
4214
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4215
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4216
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4217
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4218
		#可省略參數:
4219
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4220
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("params");
4221
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4222
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
4223
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4224
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4225
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4226
		#$conf["canNotBeEmpty"]=array();
4227
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4228
		#$conf["canBeEmpty"]=array();
4229
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4230
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("hideSecret");
4231
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4232
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("keyWords","changedTo");
4233
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4234
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string");
4235
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4236
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(array("password","key","secret","Secret"),"[classified content]");
4237
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4238
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4239
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4240
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4241
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4242
		#$conf["arrayCountEqualCheck"][]=array();
4243
		#參考資料:
4244
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4245
		#備註:
4246
		#無.
4247
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4248
		unset($conf["variableCheck::checkArguments"]);
4249
 
4250
		#若執行失敗
4251
		if($checkArguments["status"]==="false"){
226 liveuser 4252
 
3 liveuser 4253
			#設置執行失敗
4254
			$result["status"]="false";
226 liveuser 4255
 
3 liveuser 4256
			#設置錯誤訊息
4257
			$result["error"]=$checkArguments;
226 liveuser 4258
 
3 liveuser 4259
			#回傳內容
4260
			return $reuslt;
226 liveuser 4261
 
3 liveuser 4262
			}#if end
4263
 
4264
		#若檢查不通過
4265
		if($checkArguments["passed"]==="false"){
226 liveuser 4266
 
3 liveuser 4267
			#設置執行失敗
4268
			$result["status"]="false";
226 liveuser 4269
 
3 liveuser 4270
			#設置錯誤訊息
4271
			$result["error"]=$checkArguments;
226 liveuser 4272
 
3 liveuser 4273
			#回傳內容
4274
			return $result;
226 liveuser 4275
 
3 liveuser 4276
			}#if end
4277
 
4278
		#初始化待處理的陣列變數
4279
		$unprocessedArray=array(&$conf["params"]);
4280
 
4281
		#針對陣列中每個元素
4282
		while(isset($unprocessedArray[0])){
226 liveuser 4283
 
3 liveuser 4284
			/*
4285
			#debug
4286
			echo "<p>";
4287
			var_dump($unprocessedArray);
4288
			*/
226 liveuser 4289
 
3 liveuser 4290
			#取得當前元素
4291
			$element=&$unprocessedArray[0];
226 liveuser 4292
 
3 liveuser 4293
			/*
4294
			#debug
4295
			echo "<br>";
4296
			var_dump(gettype($element));
4297
			*/
226 liveuser 4298
 
3 liveuser 4299
			#如果元素為陣列
4300
			if(gettype($element)==="array"){
226 liveuser 4301
 
3 liveuser 4302
				#針對每個變數
4303
				foreach($element as $arrayKey=>$arrayVal){
226 liveuser 4304
 
3 liveuser 4305
					/*
4306
					#debug
4307
					echo "<p>";
4308
					echo "foreach in \$element, key=".$arrayKey."<br>";
4309
					echo "content of \$element:".print_r($element,true);
226 liveuser 4310
 
3 liveuser 4311
					#debug
4312
					echo "<p>";
4313
					echo "check key:".$arrayKey;
4314
					*/
226 liveuser 4315
 
3 liveuser 4316
					#函式說明:
4317
					#檢查一個字串裡面是否有多個關鍵字
4318
					#回傳結果:
4319
					#$result["status"],"true"代表執行成功,"false"代表執行失敗.
4320
					#$result["error"],錯誤訊息.
4321
					#$result["function"],當前執行的函數名稱.
4322
					#$result["founded"],是否有找到的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
4323
					#$result["foundedKeyWords"],找到的關鍵字.
4324
					#$result["foundedAll"],是否有找到全部的關鍵字,"true"代表有;"false"代表沒有.
4325
					#$result["argu"],使用的參數.
4326
					#必填參數:
4327
					#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
4328
					$conf["search::findManyKeyWords"]["keyWords"]=$conf["keyWords"];
4329
					#$conf["string"],字串,要被搜尋的字串內容.
4330
					$conf["search::findManyKeyWords"]["string"]=$arrayKey;
4331
					#可省略參數:
4332
					#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合.
4333
					#$conf["completeEqual"]="true";
4334
					#參考資料:
4335
					#無.
4336
					#備註:
4337
					#無.
4338
					$findManyKeyWords=search::findManyKeyWords($conf["search::findManyKeyWords"]);
4339
					unset($conf["search::findManyKeyWords"]);
226 liveuser 4340
 
3 liveuser 4341
					/*
4342
					#debug
4343
					echo "<p>";
4344
					echo "content of \$findManyKeyWords:<br>";
4345
					var_dump($findManyKeyWords);
4346
					*/
226 liveuser 4347
 
3 liveuser 4348
					#若執行失敗
4349
					if($findManyKeyWords["status"]==="false"){
226 liveuser 4350
 
3 liveuser 4351
						#設置執行失敗
4352
						$result["status"]="false";
226 liveuser 4353
 
3 liveuser 4354
						#設置錯誤訊息
4355
						$result["error"]=$findManyKeyWords;
226 liveuser 4356
 
3 liveuser 4357
						#回傳內容
4358
						return $reuslt;
226 liveuser 4359
 
3 liveuser 4360
						}#if end
226 liveuser 4361
 
3 liveuser 4362
					#若有符合的關鍵字
4363
					if($findManyKeyWords["founded"]==="true"){
226 liveuser 4364
 
3 liveuser 4365
						/*
4366
						#deubg
4367
						echo "<p>";
4368
						echo "置換 key 為 ".$arrayKey." 者的內容為 ".$conf["changedTo"];
4369
						*/
226 liveuser 4370
 
3 liveuser 4371
						#替換其內容
4372
						$element[$arrayKey]=$conf["changedTo"];
226 liveuser 4373
 
3 liveuser 4374
						/*
4375
						#debug
4376
						echo "<p>";
4377
						echo "替換其內容後 為 ".print_r($element,true);
4378
						*/
226 liveuser 4379
 
3 liveuser 4380
						#針對下個元素
4381
						continue;
226 liveuser 4382
 
3 liveuser 4383
						}#if end
226 liveuser 4384
 
3 liveuser 4385
					#如果數值為陣列
4386
					if(gettype($arrayVal)==="array"){
226 liveuser 4387
 
3 liveuser 4388
						/*
4389
						#deubg
4390
						echo "<p>";
4391
						echo "新增待處理的陣列 其 key 為 ".$arrayKey;
4392
						*/
226 liveuser 4393
 
3 liveuser 4394
						#儲存到待處理的陣列中
4395
						$unprocessedArray[]=&$element[$arrayKey];
226 liveuser 4396
 
3 liveuser 4397
						/*
4398
						#debug
4399
						echo "<p>";
4400
						echo "新增待處理的陣列後 其 內容 為 ".print_r($unprocessedArray,true);
4401
						*/
226 liveuser 4402
 
3 liveuser 4403
						}#if end
226 liveuser 4404
 
3 liveuser 4405
					}#foreach end
4406
 
4407
				}#if end
226 liveuser 4408
 
3 liveuser 4409
			/*
4410
			#debug
4411
			echo "<br>";
4412
			echo "before array_shift, count of \$unprocessedArray:".count($unprocessedArray);
4413
			echo "<br>";
4414
			var_dump($unprocessedArray);
4415
			*/
226 liveuser 4416
 
3 liveuser 4417
			#將第一個元素移除
4418
			array_shift($unprocessedArray);
226 liveuser 4419
 
3 liveuser 4420
			/*
4421
			#debug
4422
			echo "<br>";
4423
			echo "after array_shift, count of \$unprocessedArray:".count($unprocessedArray);
4424
			echo "<br>";
4425
			var_dump($unprocessedArray);
4426
			echo "<hr>";
4427
			*/
226 liveuser 4428
 
3 liveuser 4429
			}#while end
4430
 
4431
		#設置回傳內容
4432
		$result["content"]=$conf["params"];
4433
 
4434
		#設置執行正常
4435
		$result["status"]="true";
4436
 
4437
		#回傳結果
4438
		return $result;
226 liveuser 4439
 
3 liveuser 4440
		}#function hideParams end
4441
 
4442
	/*
4443
	#函式說明:
4444
	#取得簡單的錯誤訊息
4445
	#回傳結果:
4446
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4447
	#$result["content"],結果.
4448
	#$result["function"],當前執行的函數
4449
	#$result["error"],涵式錯誤訊息陣列
4450
	#必填參數:
4451
	#$conf["error"],陣列,要處理的變數.
4452
	$conf["error"]=array();
4453
	#可省略參數:
4454
	#無
4455
	#參考資料:
4456
	#無.
4457
	#備註:
4458
	#無.
4459
	*/
4460
	public static function getSimpleError(&$conf){
226 liveuser 4461
 
3 liveuser 4462
		#var_dump($conf);
226 liveuser 4463
 
3 liveuser 4464
		#初始化要回傳的結果
4465
		$result=array();
4466
 
4467
		#取得當前執行的函數名稱
4468
		$result["function"]=__FUNCTION__;
4469
 
4470
		#如果沒有參數
4471
		if(func_num_args()==0){
4472
 
4473
			#設置執行失敗
4474
			$result["status"]="false";
4475
 
4476
			#設置執行錯誤訊息
4477
			$result["error"]="函數".$result["function"]."需要參數";
4478
 
4479
			#無窮迴圈
4480
			while(true){
226 liveuser 4481
 
3 liveuser 4482
				#遞迴執行
4483
				$conf["self::getSimpleError"]["error"]=$result;
4484
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4485
				unset($conf["self::getSimpleError"]);
226 liveuser 4486
 
3 liveuser 4487
				#如果執行失敗
4488
				if($simpleError["status"]==="false"){
226 liveuser 4489
 
3 liveuser 4490
					#設置執行失敗
4491
					$result["status"]="false";
4492
 
4493
					#設置執行錯誤訊息
4494
					$result["error"]=$simpleError;
226 liveuser 4495
 
3 liveuser 4496
					#下一輪
4497
					continue;
226 liveuser 4498
 
3 liveuser 4499
					}#if end
226 liveuser 4500
 
3 liveuser 4501
				#結束 while
4502
				break;
226 liveuser 4503
 
3 liveuser 4504
				}#while end
4505
 
4506
			return $result;
4507
 
4508
			}#if end
4509
 
4510
		#取得參數
4511
		$result["argu"]=$conf;
4512
 
4513
		#如果 $conf 不為陣列
4514
		if(gettype($conf)!=="array"){
4515
 
4516
			#設置執行失敗
4517
			$result["status"]="false";
4518
 
4519
			#設置執行錯誤訊息
4520
			$result["error"][]="\$conf變數須為陣列形態";
4521
 
4522
			#如果傳入的參數為 null
4523
			if(is_null($conf)){
4524
 
4525
				#設置執行錯誤訊息
4526
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4527
 
4528
				}#if end
226 liveuser 4529
 
3 liveuser 4530
			#無窮迴圈
4531
			while(true){
226 liveuser 4532
 
3 liveuser 4533
				#遞迴執行
4534
				$conf["self::getSimpleError"]["error"]=$result;
4535
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4536
				unset($conf["self::getSimpleError"]);
226 liveuser 4537
 
3 liveuser 4538
				#如果執行失敗
4539
				if($simpleError["status"]==="false"){
226 liveuser 4540
 
3 liveuser 4541
					#設置執行失敗
4542
					$result["status"]="false";
4543
 
4544
					#設置執行錯誤訊息
4545
					$result["error"]=$simpleError;
226 liveuser 4546
 
3 liveuser 4547
					#下一輪
4548
					continue;
226 liveuser 4549
 
3 liveuser 4550
					}#if end
226 liveuser 4551
 
3 liveuser 4552
				#結束 while
4553
				break;
226 liveuser 4554
 
3 liveuser 4555
				}#while end
4556
 
4557
			#回傳結果
4558
			return $result;
4559
 
4560
			}#if end
226 liveuser 4561
 
3 liveuser 4562
		#函式說明:
4563
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4564
		#回傳結果:
4565
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4566
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4567
		#$result["function"],當前執行的函式名稱.
4568
		#$result["argu"],設置給予的參數.
4569
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4570
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4571
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4572
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4573
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4574
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4575
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4576
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4577
		#必填參數:
4578
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4579
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4580
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4581
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4582
		#可省略參數:
4583
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4584
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("error");
4585
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4586
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
4587
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4588
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4589
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4590
		#$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("gw_primary_ids");
4591
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4592
		#$conf["canBeEmpty"]=array();
4593
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4594
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4595
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4596
		#$conf["skipableVariableName"]=array();
4597
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4598
		#$conf["skipableVariableType"]=array();
4599
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4600
		#$conf["skipableVarDefaultValue"]=array("");
4601
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4602
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4603
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4604
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4605
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4606
		#$conf["arrayCountEqualCheck"][]=array();
4607
		#參考資料:
4608
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4609
		#備註:
4610
		#無.
4611
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4612
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4613
 
3 liveuser 4614
		#如果執行失敗
4615
		if($checkArguments["status"]==="false"){
226 liveuser 4616
 
3 liveuser 4617
			#設置執行失敗
4618
			$result["status"]="false";
4619
 
4620
			#設置執行錯誤訊息
4621
			$result["error"]=$checkArguments;
4622
 
4623
			#無窮迴圈
4624
			while(true){
226 liveuser 4625
 
3 liveuser 4626
				#遞迴執行
4627
				$conf["self::getSimpleError"]["error"]=$result;
4628
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4629
				unset($conf["self::getSimpleError"]);
226 liveuser 4630
 
3 liveuser 4631
				#如果執行失敗
4632
				if($simpleError["status"]==="false"){
226 liveuser 4633
 
3 liveuser 4634
					#設置執行失敗
4635
					$result["status"]="false";
4636
 
4637
					#設置執行錯誤訊息
4638
					$result["error"]=$simpleError;
226 liveuser 4639
 
3 liveuser 4640
					#下一輪
4641
					continue;
226 liveuser 4642
 
3 liveuser 4643
					}#if end
226 liveuser 4644
 
3 liveuser 4645
				#如果檢查不通過
4646
				if($simpleError["passed"]==="false"){
226 liveuser 4647
 
3 liveuser 4648
					#設置執行失敗
4649
					$result["status"]="false";
4650
 
4651
					#設置執行錯誤訊息
4652
					$result["error"]=$simpleError;
226 liveuser 4653
 
3 liveuser 4654
					#下一輪
4655
					continue;
226 liveuser 4656
 
3 liveuser 4657
					}#if end
226 liveuser 4658
 
3 liveuser 4659
				#結束 while
4660
				break;
226 liveuser 4661
 
3 liveuser 4662
				}#while end
4663
 
4664
			#取得 simpleError
4665
			$result["simpleError"]=$simpleError["content"];
4666
 
4667
			#回傳結果
4668
			return $result;
226 liveuser 4669
 
3 liveuser 4670
			}#if end
226 liveuser 4671
 
3 liveuser 4672
		#如果執行失敗
4673
		if($checkArguments["passed"]==="false"){
226 liveuser 4674
 
3 liveuser 4675
			#設置執行失敗
4676
			$result["status"]="false";
4677
 
4678
			#設置執行錯誤訊息
4679
			$result["error"]=$checkArguments;
226 liveuser 4680
 
3 liveuser 4681
			#無窮迴圈
4682
			while(true){
226 liveuser 4683
 
3 liveuser 4684
				#遞迴執行
4685
				$conf["self::getSimpleError"]["error"]=$result;
4686
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4687
				unset($conf["self::getSimpleError"]);
226 liveuser 4688
 
3 liveuser 4689
				#如果執行失敗
4690
				if($simpleError["status"]==="false"){
226 liveuser 4691
 
3 liveuser 4692
					#設置執行失敗
4693
					$result["status"]="false";
4694
 
4695
					#設置執行錯誤訊息
4696
					$result["error"]=$simpleError;
226 liveuser 4697
 
3 liveuser 4698
					#下一輪
4699
					continue;
226 liveuser 4700
 
3 liveuser 4701
					}#if end
226 liveuser 4702
 
3 liveuser 4703
				#如果檢查不通過
4704
				if($simpleError["passed"]==="false"){
226 liveuser 4705
 
3 liveuser 4706
					#設置執行失敗
4707
					$result["status"]="false";
4708
 
4709
					#設置執行錯誤訊息
4710
					$result["error"]=$simpleError;
226 liveuser 4711
 
3 liveuser 4712
					#下一輪
4713
					continue;
226 liveuser 4714
 
3 liveuser 4715
					}#if end
226 liveuser 4716
 
3 liveuser 4717
				#結束 while
4718
				break;
226 liveuser 4719
 
3 liveuser 4720
				}#while end
4721
 
4722
			#取得 simpleError
4723
			$result["simpleError"]=$simpleError["content"];
4724
 
4725
			#回傳結果
4726
			return $result;
226 liveuser 4727
 
3 liveuser 4728
			}#if end
226 liveuser 4729
 
3 liveuser 4730
		#var_dump($result);
226 liveuser 4731
 
3 liveuser 4732
		#初始化簡單的錯誤
4733
		$result["content"]=&$conf["error"];
4734
 
4735
		#如果底下有 error 元素
4736
		while(isset($result["content"]["error"])){
226 liveuser 4737
 
3 liveuser 4738
			#var_dump($result["content"]["error"]);
226 liveuser 4739
 
3 liveuser 4740
			#取得其位置
4741
			$result["content"]=&$result["content"]["error"];
226 liveuser 4742
 
3 liveuser 4743
			}#while end
226 liveuser 4744
 
3 liveuser 4745
		#初始化新的結果
4746
		$newContentStr="";
226 liveuser 4747
 
3 liveuser 4748
		#如果 content 不是字串
4749
		if(gettype($result["content"])!=="string"){
226 liveuser 4750
 
3 liveuser 4751
			#var_dump($result["content"]);
226 liveuser 4752
 
3 liveuser 4753
			#針對每個錯誤訊息
4754
			foreach($result["content"] as $errorLine){
226 liveuser 4755
 
3 liveuser 4756
				#如果不是字串
4757
				if(gettype($errorLine)!=="string"){
226 liveuser 4758
 
3 liveuser 4759
					#將陣列轉換成字串
4760
					$errorLine=print_r($errorLine,true);
226 liveuser 4761
 
3 liveuser 4762
					}#if end
226 liveuser 4763
 
3 liveuser 4764
				#串接結果
4765
				$newContentStr=$newContentStr.$errorLine.PHP_EOL;
226 liveuser 4766
 
3 liveuser 4767
				}#foreache end
226 liveuser 4768
 
4769
			}#if end
4770
 
3 liveuser 4771
		#設置結果內容
4772
		$result["content"]=$newContentStr;
226 liveuser 4773
 
3 liveuser 4774
		#設置執行正常
4775
		$result["status"]=true;
226 liveuser 4776
 
3 liveuser 4777
		#回傳結果
4778
		return $result;
226 liveuser 4779
 
3 liveuser 4780
		}#function getSimpleError end
226 liveuser 4781
 
3 liveuser 4782
	/*
4783
	#函式說明:
4784
	#檢查字串是否符合指定格式
4785
	#回傳結果:
4786
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4787
	#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
4788
	#$result["content"],詳細結果訊息陣列,若passed為"false"則會有該內容.
4789
	#$result["newInputArgu"],剩下尚未檢驗格式的input.
4790
	#$result["function"],當前執行的函數.
4791
	#$result["error"],涵式錯誤訊息陣列.
4792
	#必填參數:
4793
	#$conf["input"],字串,要檢查格式的字串.
4794
	$conf["input"]="";
4795
	#可省略參數:
4796
	#$conf["equalWith"],字串,輸入字串是否等於該參數內容.
4797
	#$conf["equalWith"]="";
4798
	#$conf["startWith"],字串,開頭要是什麼字串內容.
4799
	#$conf["startWith"]="";
4800
	#$conf["endWith"],字串,結尾要是什麼字串內容.
4801
	#$conf["endWith"]="";
4802
	#$conf["centerWith"],字串,非開頭(預設無,若有指定startWith參數,則為該參數內容)跟結尾(預設無,若有指定endWith參數,則為該參數內容)的內容中要有什麼字串.
4803
	#$conf["centerWith"]="";
4804
	#$conf["length"],字串整數,字串的長度要多少(bytes).
4805
	#$conf["length"]="";
4806
	#$conf["lengthGrapheme"],字串整數,字串的長度要多少字位(grapheme).
4807
	#$conf["lengthGrapheme"]="";
4808
	#$conf["section"],字串陣列,元素數量代表,輸入字串的格式可以區分成多少段.每個元素為本函式的參數陣列剔除input跟section參數.
4809
	#$conf["section"]=array();
4810
	#參考資料:
4811
	#grapheme_strlen=>https://www.php.net/manual/en/function.grapheme-strlen.php
4812
	#grapheme/字位/可以書寫的最小單位=>https://zh.wikipedia.org/zh-tw/%E5%AD%97%E4%BD%8D
4813
	#grapheme_substr=>https://www.php.net/manual/en/function.grapheme-substr.php
4814
	#備註:
4815
	#無.
4816
	*/
4817
	public static function checkStringFormat(&$conf){
226 liveuser 4818
 
3 liveuser 4819
		#初始化要回傳的內容
4820
		$result=array();
4821
 
4822
		#取得當前執行的函數名稱
4823
		$result["function"]=__FUNCTION__;
4824
 
4825
		#如果 $conf 不為陣列
4826
		if(gettype($conf)!="array"){
226 liveuser 4827
 
3 liveuser 4828
			#設置執行失敗
4829
			$result["status"]="false";
226 liveuser 4830
 
3 liveuser 4831
			#設置執行錯誤訊息
4832
			$result["error"][]="\$conf變數須為陣列形態";
4833
 
4834
			#如果傳入的參數為 null
4835
			if($conf==null){
226 liveuser 4836
 
3 liveuser 4837
				#設置執行錯誤訊息
4838
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4839
 
3 liveuser 4840
				}#if end
4841
 
4842
			#回傳結果
4843
			return $result;
226 liveuser 4844
 
3 liveuser 4845
			}#if end
226 liveuser 4846
 
3 liveuser 4847
		#取得參數
4848
		$result["argu"]=$conf;
4849
 
4850
		#函式說明:
4851
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4852
		#回傳結果:
4853
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4854
		#$result["error"],執行不正常結束的錯訊息陣列.
4855
		#$result["simpleError"],簡單表示的錯誤訊息.
4856
		#$result["function"],當前執行的函式名稱.
4857
		#$result["argu"],設置給予的參數.
4858
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4859
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4860
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4861
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4862
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4863
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4864
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4865
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4866
		#必填參數:
4867
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4868
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4869
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4870
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4871
		#可省略參數:
4872
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4873
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
4874
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4875
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4876
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4877
		#$conf["variadble::checkArguments"]["canBeEmptyString"]="false";
4878
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4879
		#$conf["canNotBeEmpty"]=array();
4880
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4881
		#$conf["canBeEmpty"]=array();
4882
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4883
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("equalWith","startWith","centerWith","endWith","length","lengthGrapheme","section");
4884
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4885
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("equalWith","startWith","centerWith","endWith","length","lengthGrapheme","section");
4886
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4887
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","array");
4888
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4889
		#$conf["skipableVarDefaultValue"]=array("");
4890
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4891
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4892
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4893
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4894
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
4895
		$conf["variableCheck::checkArguments"]["disallowAllSkipableVarNotExist"]="true";
4896
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4897
		#$conf["arrayCountEqualCheck"][]=array();
4898
		#參考資料:
4899
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4900
		#備註:
4901
		#無.
4902
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4903
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4904
 
3 liveuser 4905
		#如果檢查失敗
4906
		if($checkArguments["status"]==="false"){
226 liveuser 4907
 
3 liveuser 4908
			#設置錯誤識別
4909
			$result["status"]="false";
226 liveuser 4910
 
3 liveuser 4911
			#設置錯誤訊息
4912
			$result["error"]=$checkArguments;
226 liveuser 4913
 
3 liveuser 4914
			#回傳結果
4915
			return $result;
226 liveuser 4916
 
3 liveuser 4917
			}#if end
226 liveuser 4918
 
3 liveuser 4919
		#如果檢查不通過
4920
		if($checkArguments["passed"]==="false"){
226 liveuser 4921
 
3 liveuser 4922
			#設置錯誤識別
4923
			$result["status"]="false";
226 liveuser 4924
 
3 liveuser 4925
			#設置錯誤訊息
4926
			$result["error"]=$checkArguments;
226 liveuser 4927
 
3 liveuser 4928
			#回傳結果
4929
			return $result;
226 liveuser 4930
 
3 liveuser 4931
			}#if end
226 liveuser 4932
 
3 liveuser 4933
		#預設剩下未檢查格式的input為空字串
4934
		$result["newInputArgu"]="";
226 liveuser 4935
 
3 liveuser 4936
		#如果存在分段的格式設定
4937
		if(isset($conf["section"])){
226 liveuser 4938
 
3 liveuser 4939
			#預設都是尚未檢驗的字串
4940
			$newInputArgu=$conf["input"];
226 liveuser 4941
 
3 liveuser 4942
			#針對每段
4943
			foreach($conf["section"] as $index => $sec){
226 liveuser 4944
 
3 liveuser 4945
				#更新input參數
4946
				$sec["input"]=$newInputArgu;
226 liveuser 4947
 
3 liveuser 4948
				#處理該section
4949
				#函式說明:
4950
				#檢查字串是否符合指定格式
4951
				#回傳結果:
4952
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4953
				#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
4954
				#$result["content"],詳細結果訊息陣列,若passed為"false"則會有該內容.
4955
				#$result["newInputArgu"],剩下尚未檢驗格式的input.
4956
				#$result["function"],當前執行的函數.
4957
				#$result["error"],涵式錯誤訊息陣列.
4958
				#必填參數:
4959
				#$conf["input"],字串,要檢查格式的字串.
4960
				#$conf["variableCheck::checkStringFormat"]["input"]=$newInputArgu;
4961
				#可省略參數:
4962
				#$conf["equalWith"],字串,輸入字串是否等於該參數內容.
4963
				#$conf["equalWith"]="";
4964
				#$conf["startWith"],字串,開頭要是什麼字串內容.
4965
				#$conf["startWith"]="";
4966
				#$conf["endWith"],字串,結尾要是什麼字串內容.
4967
				#$conf["endWith"]="";
4968
				#$conf["centerWith"],字串,非開頭(預設無,若有指定startWith參數,則為該參數內容)跟結尾(預設無,若有指定endWith參數,則為該參數內容)的內容中要有什麼字串.
4969
				#$conf["centerWith"]="";
4970
				#$conf["length"],字串整數,字串的長度要多少(bytes).
4971
				#$conf["length"]="";
4972
				#$conf["lengthGrapheme"],字串整數,字串的長度要多少字位(grapheme).
4973
				#$conf["lengthGrapheme"]="";
226 liveuser 4974
				#$conf["variableCheck::checkStringFormat"]["section"]=$nextSectionArgu;
3 liveuser 4975
				#參考資料:
4976
				#grapheme_strlen=>https://www.php.net/manual/en/function.grapheme-strlen.php
4977
				#grapheme/字位/可以書寫的最小單位=>https://zh.wikipedia.org/zh-tw/%E5%AD%97%E4%BD%8D
4978
				#備註:
4979
				#無.
4980
				$conf["variableCheck::checkStringFormat"]=$sec;
4981
				$checkStringFormat=variableCheck::checkStringFormat($conf["variableCheck::checkStringFormat"]);
4982
				unset($conf["variableCheck::checkStringFormat"]);
226 liveuser 4983
 
3 liveuser 4984
				#如果執行失敗
4985
				if($checkStringFormat["status"]=="false"){
226 liveuser 4986
 
3 liveuser 4987
					#設置錯誤識別
4988
					$result["status"]="false";
226 liveuser 4989
 
3 liveuser 4990
					#設置錯誤訊息
4991
					$result["error"]=$checkStringFormat;
226 liveuser 4992
 
3 liveuser 4993
					#回傳結果
4994
					return $result;
226 liveuser 4995
 
3 liveuser 4996
					}#if end
226 liveuser 4997
 
3 liveuser 4998
				#如果不通過
4999
				if($checkStringFormat["passed"]=="false"){
226 liveuser 5000
 
3 liveuser 5001
					#回傳結果
5002
					return $checkStringFormat;
226 liveuser 5003
 
3 liveuser 5004
					}#if end
226 liveuser 5005
 
3 liveuser 5006
				#取得新的input參數
5007
				$newInputArgu=$checkStringFormat["newInputArgu"];
226 liveuser 5008
 
3 liveuser 5009
				}#foreach end
226 liveuser 5010
 
3 liveuser 5011
			}#if end
226 liveuser 5012
 
3 liveuser 5013
		#到這邊代表不存在分段的格式設定
226 liveuser 5014
 
3 liveuser 5015
		#初始化關鍵字
5016
		$keywords=array();
226 liveuser 5017
 
3 liveuser 5018
		#如果有 startWith
5019
		if(isset($conf["startWith"])){
226 liveuser 5020
 
3 liveuser 5021
			#設置關鍵字
5022
			$keywords[]=$conf["startWith"];
226 liveuser 5023
 
3 liveuser 5024
			}#if end
226 liveuser 5025
 
3 liveuser 5026
		#如果有 centerWith
5027
		if(isset($conf["centerWith"])){
226 liveuser 5028
 
3 liveuser 5029
			#設置關鍵字
5030
			$keywords[]=$conf["centerWith"];
226 liveuser 5031
 
3 liveuser 5032
			}#if end
226 liveuser 5033
 
3 liveuser 5034
		#如果有 endWith
5035
		if(isset($conf["endWith"])){
226 liveuser 5036
 
3 liveuser 5037
			#設置關鍵字
5038
			$keywords[]=$conf["endWith"];
226 liveuser 5039
 
3 liveuser 5040
			}#if end
226 liveuser 5041
 
3 liveuser 5042
		#如果存在關鍵字
5043
		if(!empty($keywords)){
226 liveuser 5044
 
3 liveuser 5045
			#若有指定bytes長度
5046
			if(isset($conf["length"])){
226 liveuser 5047
 
3 liveuser 5048
				#取得輸入的字串長度
5049
				$length=strlen($conf["input"]);
226 liveuser 5050
 
3 liveuser 5051
				#如果長度不足
5052
				if($length<(int)$conf["length"]){
226 liveuser 5053
 
3 liveuser 5054
					#設置執行正常
5055
					$result["status"]="true";
226 liveuser 5056
 
3 liveuser 5057
					#設置檢查不通過
5058
					$result["passed"]="false";
226 liveuser 5059
 
3 liveuser 5060
					#設置詳細結果訊息陣列.
5061
					$result["content"][]="input參數(".$conf["input"].")的bytes長度(".$length.")小於length參數(".$conf["length"].")";
226 liveuser 5062
 
3 liveuser 5063
					#回傳結果
5064
					return $result;
226 liveuser 5065
 
3 liveuser 5066
					}#if end
226 liveuser 5067
 
3 liveuser 5068
				#函式說明:
5069
				#unicode的字串分割,比str_split的支援度高.
5070
				#回傳結果:
5071
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5072
				#$result["error"],錯誤訊息陣列.
3 liveuser 5073
				#$result["function"],當前執行的函數名稱.
5074
				#$result["content"],分割好的內容陣列.
5075
				#$result["length"],unicode字串的長度.
5076
				#必填參數:
5077
				#$conf["str"],字串",要分割的字串.
5078
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5079
				#可省略參數:
5080
				#$conf["length"],整數,分割的長度.
5081
				#$conf["stringProcess::str_split_unicode"]["length"]=(int)$conf["length"];
5082
				#參考資料:
5083
				#http://php.net/manual/en/function.str-split.php
5084
				#備註:
5085
				#無.
5086
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5087
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5088
 
3 liveuser 5089
				#如果執行失敗
5090
				if($str_split_unicode["status"]==="false"){
226 liveuser 5091
 
3 liveuser 5092
					#設置執行失敗
5093
					$result["status"]="false";
226 liveuser 5094
 
3 liveuser 5095
					#設置執行錯誤訊息
5096
					$result["error"]=$str_split_unicode;
226 liveuser 5097
 
3 liveuser 5098
					#回傳結果
5099
					return $result;
226 liveuser 5100
 
5101
					}#if end
5102
 
3 liveuser 5103
				#初始化給search::findKeyWordsPosition的input參數
5104
				$newInputArguForFindKeyWordsPosition="";
226 liveuser 5105
 
3 liveuser 5106
				#初始化給variableCheck::checkStringFormat的input參數
5107
				$newInputArgu="";
226 liveuser 5108
 
3 liveuser 5109
				#針對剩下的每個bytes
5110
				foreach($str_split_unicode["content"] as $index=>$splitedStr){
226 liveuser 5111
 
3 liveuser 5112
					#屬於findKeyWordsPosition的input參數
5113
					if($index<(int)$conf["length"]){
226 liveuser 5114
 
3 liveuser 5115
						#串接新的input參數bytes
5116
						$newInputArguForFindKeyWordsPosition=$newInputArguForFindKeyWordsPosition.$splitedStr;
226 liveuser 5117
 
3 liveuser 5118
						}#if end
226 liveuser 5119
 
3 liveuser 5120
					#反之
5121
					else{
226 liveuser 5122
 
3 liveuser 5123
						#串接新的input參數bytes
5124
						$newInputArgu=$newInputArgu.$splitedStr;
226 liveuser 5125
 
3 liveuser 5126
						}#else end
226 liveuser 5127
 
3 liveuser 5128
					}#foreach end
226 liveuser 5129
 
3 liveuser 5130
				}#if end
226 liveuser 5131
 
3 liveuser 5132
			#反之不存在指定bytes長度
226 liveuser 5133
 
3 liveuser 5134
			#但有指定字位長度
5135
			else if(isset($conf["lengthGrapheme"])){
226 liveuser 5136
 
3 liveuser 5137
				#取得輸入的字位長度
5138
				$grapheme_strlen=grapheme_strlen($conf["input"]);
226 liveuser 5139
 
3 liveuser 5140
				#如果長度不足
5141
				if($grapheme_strlen>(int)$conf["lengthGrapheme"]){
226 liveuser 5142
 
3 liveuser 5143
					#設置執行正常
5144
					$result["status"]="true";
226 liveuser 5145
 
3 liveuser 5146
					#設置檢查不通過
5147
					$result["passed"]="false";
226 liveuser 5148
 
3 liveuser 5149
					#設置詳細結果訊息陣列.
5150
					$result["content"][]="input參數(".$conf["input"].")的字位長度(".$grapheme_strlen.")小於lengthGrapheme參數(".$conf["lengthGrapheme"].")";
226 liveuser 5151
 
3 liveuser 5152
					#回傳結果
5153
					return $result;
226 liveuser 5154
 
3 liveuser 5155
					}#if end
226 liveuser 5156
 
3 liveuser 5157
				#初始化給search::findKeyWordsPosition的input參數
5158
				$arguForFindKeyWordsPosition=grapheme_substr($conf["input"],0,$conf["lengthGrapheme"]);
226 liveuser 5159
 
3 liveuser 5160
				#初始化給variableCheck::checkStringFormat的input參數
5161
				$newInputArgu=grapheme_substr($conf["input"],$conf["lengthGrapheme"]);
226 liveuser 5162
 
3 liveuser 5163
				}#if end
226 liveuser 5164
 
3 liveuser 5165
			#函式說明:
5166
			#取得關鍵字在字串的哪個位置(字首,字尾,中間)
5167
			#回傳結果:
5168
			#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
5169
			#$result["error"],錯誤訊息陣列.
5170
			#$result["function"],當前執行的函數名稱.
5171
			#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
5172
			#$result["argu"],傳入的參數.
5173
			#$result["head"][i],第i個關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
5174
			#$result["tail"][i],第i個關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
5175
			#$result["center"][i],第i個關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
5176
			#$result["indexS"][i],第i個關鍵字在被搜尋字串的哪個位置開始.
5177
			#$result["indexE"][i],第i個關鍵字在被搜尋字串的哪個位置結束.
5178
			#必填參數:
226 liveuser 5179
 
3 liveuser 5180
			#如果存在 newInputArguForFindKeyWordsPosition,就用之.
5181
			if(isset($newInputArguForFindKeyWordsPosition)){
226 liveuser 5182
 
3 liveuser 5183
				#$conf["inputStr"],字串,被搜尋的字串.
5184
				$conf["search::findKeyWordsPosition"]["inputStr"]=$newInputArguForFindKeyWordsPosition;
226 liveuser 5185
 
3 liveuser 5186
				}#if end
226 liveuser 5187
 
3 liveuser 5188
			#反之用原始輸入字串
5189
			else{
226 liveuser 5190
 
3 liveuser 5191
				#$conf["inputStr"],字串,被搜尋的字串.
5192
				$conf["search::findKeyWordsPosition"]["inputStr"]=$conf["input"];
226 liveuser 5193
 
3 liveuser 5194
				}#else end
226 liveuser 5195
 
3 liveuser 5196
			#$conf["keyWords"],字串陣列,要搜尋的多個關鍵字
5197
			$conf["search::findKeyWordsPosition"]["keyWords"]=$keywords;
5198
			#可省略參數:
5199
			#無.
5200
			#參考資料:
5201
			#http://php.net/manual/en/function.strpos.php
5202
			#備註:
5203
			#無.
5204
			$findKeyWordsPosition=search::findKeyWordsPosition($conf["search::findKeyWordsPosition"]);
5205
			unset($conf["search::findKeyWordsPosition"]);
226 liveuser 5206
 
3 liveuser 5207
			#如果執行失敗
5208
			if($findKeyWordsPosition["status"]==="false"){
226 liveuser 5209
 
3 liveuser 5210
				#設置錯誤識別
5211
				$result["status"]="false";
226 liveuser 5212
 
3 liveuser 5213
				#設置錯誤訊息
5214
				$result["error"]=$findKeyWordsPosition;
226 liveuser 5215
 
3 liveuser 5216
				#回傳結果
5217
				return $result;
226 liveuser 5218
 
3 liveuser 5219
				}#if end
226 liveuser 5220
 
3 liveuser 5221
			#如果三個參數 startWith、centerWith、endWith 都在
5222
			if( isset($conf["startWith"]) && isset($conf["centerWith"]) && isset($conf["endWith"]) ){
226 liveuser 5223
 
3 liveuser 5224
				#如果其中一個關鍵字沒找到
5225
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["center"][1]!=="true" || $findKeyWordsPosition["tail"][2]!=="true" ){
226 liveuser 5226
 
3 liveuser 5227
					#設置執行正常
5228
					$result["status"]="true";
226 liveuser 5229
 
3 liveuser 5230
					#設置檢查不通過
5231
					$result["passed"]="false";
226 liveuser 5232
 
3 liveuser 5233
					#設置簡易資訊
5234
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、centerWith參數(".$conf["centerWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5235
 
3 liveuser 5236
					#設置詳細資訊
5237
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5238
 
3 liveuser 5239
					#回傳結果
5240
					return $result;
226 liveuser 5241
 
3 liveuser 5242
					}#if end
226 liveuser 5243
 
3 liveuser 5244
				#設置新的input參數
5245
				$result["newInputArgu"]="";
226 liveuser 5246
 
3 liveuser 5247
				}#if end
226 liveuser 5248
 
3 liveuser 5249
			#反之只有 startWith、centerWith 兩個參數
5250
			else if( isset($conf["startWith"]) && isset($conf["centerWith"]) ){
226 liveuser 5251
 
3 liveuser 5252
				#如果其中一個關鍵字沒找到
5253
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["center"][1]!=="true" ){
226 liveuser 5254
 
3 liveuser 5255
					#設置執行正常
5256
					$result["status"]="true";
226 liveuser 5257
 
3 liveuser 5258
					#設置檢查不通過
5259
					$result["passed"]="false";
226 liveuser 5260
 
3 liveuser 5261
					#設置簡易資訊
5262
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、centerWith參數(".$conf["centerWith"].")的條件";
226 liveuser 5263
 
3 liveuser 5264
					#設置詳細資訊
5265
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5266
 
3 liveuser 5267
					#回傳結果
5268
					return $result;
226 liveuser 5269
 
3 liveuser 5270
					}#if end
226 liveuser 5271
 
3 liveuser 5272
				#函式說明:
5273
				#unicode的字串分割,比str_split的支援度高.
5274
				#回傳結果:
5275
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5276
				#$result["error"],錯誤訊息陣列.
3 liveuser 5277
				#$result["function"],當前執行的函數名稱.
5278
				#$result["content"],分割好的內容陣列.
5279
				#$result["length"],unicode字串的長度.
5280
				#必填參數:
5281
				#$conf["str"],字串",要分割的字串.
5282
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5283
				#可省略參數:
5284
				#$conf["length"],整數,分割的長度.
5285
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][1];
5286
				#參考資料:
5287
				#http://php.net/manual/en/function.str-split.php
5288
				#備註:
5289
				#無.
5290
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5291
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5292
 
3 liveuser 5293
				#如果執行失敗
5294
				if($str_split_unicode["status"]==="false"){
226 liveuser 5295
 
3 liveuser 5296
					#設置執行失敗
5297
					$result["status"]="false";
226 liveuser 5298
 
3 liveuser 5299
					#設置執行錯誤訊息
5300
					$result["error"]=$str_split_unicode;
226 liveuser 5301
 
3 liveuser 5302
					#回傳結果
5303
					return $result;
226 liveuser 5304
 
5305
					}#if end
5306
 
3 liveuser 5307
				#針對剩下的每個bytes
5308
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5309
 
3 liveuser 5310
					#串接新的input參數bytes
5311
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5312
 
3 liveuser 5313
					}#foreach end
226 liveuser 5314
 
3 liveuser 5315
				}#if end
226 liveuser 5316
 
3 liveuser 5317
			#反之只有 startWith、endWith 兩個參數
5318
			else if( isset($conf["startWith"]) && isset($conf["endWith"]) ){
226 liveuser 5319
 
3 liveuser 5320
				#如果其中一個關鍵字沒找到
5321
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["tail"][1]!=="true" ){
226 liveuser 5322
 
3 liveuser 5323
					#設置執行正常
5324
					$result["status"]="true";
226 liveuser 5325
 
3 liveuser 5326
					#設置檢查不通過
5327
					$result["passed"]="false";
226 liveuser 5328
 
3 liveuser 5329
					#設置簡易資訊
5330
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5331
 
3 liveuser 5332
					#設置詳細資訊
5333
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5334
 
3 liveuser 5335
					#回傳結果
5336
					return $result;
226 liveuser 5337
 
3 liveuser 5338
					}#if end
226 liveuser 5339
 
3 liveuser 5340
				#設置新的input參數
5341
				$result["newInputArgu"]="";
226 liveuser 5342
 
3 liveuser 5343
				}#if end
226 liveuser 5344
 
3 liveuser 5345
			#反之只有 centerWith、endWith 兩個參數
5346
			else if( isset($conf["centerWith"]) && isset($conf["endWith"]) ){
5347
 
5348
				#如果其中一個關鍵字沒找到
5349
				if( $findKeyWordsPosition["center"][0]!=="true" || $findKeyWordsPosition["tail"][1]!=="true" ){
226 liveuser 5350
 
3 liveuser 5351
					#設置執行正常
5352
					$result["status"]="true";
226 liveuser 5353
 
3 liveuser 5354
					#設置檢查不通過
5355
					$result["passed"]="false";
226 liveuser 5356
 
3 liveuser 5357
					#設置簡易資訊
5358
					$result["content"][]="input參數(".$conf["input"].")不完全符合centerWith參數(".$conf["centerWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5359
 
3 liveuser 5360
					#設置詳細資訊
5361
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5362
 
3 liveuser 5363
					#回傳結果
5364
					return $result;
226 liveuser 5365
 
3 liveuser 5366
					}#if end
226 liveuser 5367
 
3 liveuser 5368
				#設置新的input參數
5369
				$result["newInputArgu"]="";
5370
 
5371
				}#if end
226 liveuser 5372
 
3 liveuser 5373
			#反之只有 startWith 參數
5374
			else if(isset($conf["startWith"])){
226 liveuser 5375
 
3 liveuser 5376
				#如果其中一個關鍵字沒找到
5377
				if( $findKeyWordsPosition["head"][0]!=="true" ){
226 liveuser 5378
 
3 liveuser 5379
					#設置執行正常
5380
					$result["status"]="true";
226 liveuser 5381
 
3 liveuser 5382
					#設置檢查不通過
5383
					$result["passed"]="false";
226 liveuser 5384
 
3 liveuser 5385
					#設置簡易資訊
5386
					$result["content"][]="input參數(".$conf["input"].")不符合startWith參數(".$conf["startWith"].")的條件";
226 liveuser 5387
 
3 liveuser 5388
					#設置詳細資訊
5389
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5390
 
3 liveuser 5391
					#回傳結果
5392
					return $result;
226 liveuser 5393
 
3 liveuser 5394
					}#if end
226 liveuser 5395
 
3 liveuser 5396
				#函式說明:
5397
				#unicode的字串分割,比str_split的支援度高.
5398
				#回傳結果:
5399
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5400
				#$result["error"],錯誤訊息陣列.
3 liveuser 5401
				#$result["function"],當前執行的函數名稱.
5402
				#$result["content"],分割好的內容陣列.
5403
				#$result["length"],unicode字串的長度.
5404
				#必填參數:
5405
				#$conf["str"],字串",要分割的字串.
5406
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5407
				#可省略參數:
5408
				#$conf["length"],整數,分割的長度.
5409
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][0];
5410
				#參考資料:
5411
				#http://php.net/manual/en/function.str-split.php
5412
				#備註:
5413
				#無.
5414
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5415
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5416
 
3 liveuser 5417
				#如果執行失敗
5418
				if($str_split_unicode["status"]==="false"){
226 liveuser 5419
 
3 liveuser 5420
					#設置執行失敗
5421
					$result["status"]="false";
226 liveuser 5422
 
3 liveuser 5423
					#設置執行錯誤訊息
5424
					$result["error"]=$str_split_unicode;
226 liveuser 5425
 
3 liveuser 5426
					#回傳結果
5427
					return $result;
226 liveuser 5428
 
5429
					}#if end
5430
 
3 liveuser 5431
				#針對剩下的每個bytes
5432
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5433
 
3 liveuser 5434
					#串接新的input參數bytes
5435
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5436
 
3 liveuser 5437
					}#foreach end
226 liveuser 5438
 
3 liveuser 5439
				}#if end
226 liveuser 5440
 
3 liveuser 5441
			#反之只有 centerWith 參數
5442
			else if(isset($conf["centerWith"])){
226 liveuser 5443
 
3 liveuser 5444
				#如果其中一個關鍵字沒找到
5445
				if( $findKeyWordsPosition["center"][0]!=="true" ){
226 liveuser 5446
 
3 liveuser 5447
					#設置執行正常
5448
					$result["status"]="true";
226 liveuser 5449
 
3 liveuser 5450
					#設置檢查不通過
5451
					$result["passed"]="false";
226 liveuser 5452
 
3 liveuser 5453
					#設置簡易資訊
5454
					$result["content"][]="input參數(".$conf["input"].")不符合centertWith參數(".$conf["centertWith"].")的條件";
226 liveuser 5455
 
3 liveuser 5456
					#設置詳細資訊
5457
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5458
 
3 liveuser 5459
					#回傳結果
5460
					return $result;
226 liveuser 5461
 
3 liveuser 5462
					}#if end
226 liveuser 5463
 
3 liveuser 5464
				#函式說明:
5465
				#unicode的字串分割,比str_split的支援度高.
5466
				#回傳結果:
5467
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5468
				#$result["error"],錯誤訊息陣列.
3 liveuser 5469
				#$result["function"],當前執行的函數名稱.
5470
				#$result["content"],分割好的內容陣列.
5471
				#$result["length"],unicode字串的長度.
5472
				#必填參數:
5473
				#$conf["str"],字串",要分割的字串.
5474
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5475
				#可省略參數:
5476
				#$conf["length"],整數,分割的長度.
5477
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][0];
5478
				#參考資料:
5479
				#http://php.net/manual/en/function.str-split.php
5480
				#備註:
5481
				#無.
5482
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5483
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5484
 
3 liveuser 5485
				#如果執行失敗
5486
				if($str_split_unicode["status"]==="false"){
226 liveuser 5487
 
3 liveuser 5488
					#設置執行失敗
5489
					$result["status"]="false";
226 liveuser 5490
 
3 liveuser 5491
					#設置執行錯誤訊息
5492
					$result["error"]=$str_split_unicode;
226 liveuser 5493
 
3 liveuser 5494
					#回傳結果
5495
					return $result;
226 liveuser 5496
 
5497
					}#if end
5498
 
3 liveuser 5499
				#針對剩下的每個bytes
5500
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5501
 
3 liveuser 5502
					#串接新的input參數bytes
5503
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5504
 
3 liveuser 5505
					}#foreach end
226 liveuser 5506
 
3 liveuser 5507
				}#if end
226 liveuser 5508
 
3 liveuser 5509
			#反之只有 endWith 參數
5510
			else if(isset($conf["endWith"])){
226 liveuser 5511
 
3 liveuser 5512
				#如果其中一個關鍵字沒找到
5513
				if( $findKeyWordsPosition["tail"][0]!=="true" ){
226 liveuser 5514
 
3 liveuser 5515
					#設置執行正常
5516
					$result["status"]="true";
226 liveuser 5517
 
3 liveuser 5518
					#設置檢查不通過
5519
					$result["passed"]="false";
226 liveuser 5520
 
3 liveuser 5521
					#設置簡易資訊
5522
					$result["content"][]="input參數(".$conf["input"].")不符合endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5523
 
3 liveuser 5524
					#設置詳細資訊
5525
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5526
 
3 liveuser 5527
					#回傳結果
5528
					return $result;
226 liveuser 5529
 
3 liveuser 5530
					}#if end
226 liveuser 5531
 
3 liveuser 5532
				#設置新的input參數
5533
				$result["newInputArgu"]="";
226 liveuser 5534
 
3 liveuser 5535
				}#if end
226 liveuser 5536
 
3 liveuser 5537
			#反之不可能發生的地方
5538
			else{
226 liveuser 5539
 
3 liveuser 5540
				#設置錯誤識別
5541
				$result["status"]="false";
226 liveuser 5542
 
3 liveuser 5543
				#設置錯誤訊息
5544
				$result["error"][]="非預期的錯誤";
226 liveuser 5545
 
3 liveuser 5546
				#設置錯誤訊息
5547
				$result["error"][]=$findKeyWordsPosition;
226 liveuser 5548
 
3 liveuser 5549
				#回傳結果
5550
				return $result;
226 liveuser 5551
 
3 liveuser 5552
				}#else end
226 liveuser 5553
 
3 liveuser 5554
			#如果存在
5555
			if(isset($newInputArgu)){
226 liveuser 5556
 
3 liveuser 5557
				#更新之
5558
				$result["newInputArgu"]=$newInputArgu;
226 liveuser 5559
 
3 liveuser 5560
				}#if end
226 liveuser 5561
 
3 liveuser 5562
			}#if end
226 liveuser 5563
 
3 liveuser 5564
		#反之,沒有關鍵字
5565
		else{
226 liveuser 5566
 
3 liveuser 5567
			#若有指定bytes長度
5568
			if(isset($conf["length"])){
226 liveuser 5569
 
3 liveuser 5570
				#取得輸入的字位長度
5571
				$length=length($conf["input"]);
226 liveuser 5572
 
3 liveuser 5573
				#如果不相等
5574
				if($length!==(int)$conf["length"]){
226 liveuser 5575
 
3 liveuser 5576
					#設置執行正常
5577
					$result["status"]="true";
226 liveuser 5578
 
3 liveuser 5579
					#設置檢查不通過
5580
					$result["passed"]="false";
226 liveuser 5581
 
3 liveuser 5582
					#設置詳細結果訊息陣列.
5583
					$result["content"][]="input參數(".$conf["input"].")的bytes長度(".$length.")與length參數(".$conf["length"].")不相等";
226 liveuser 5584
 
3 liveuser 5585
					#回傳結果
5586
					return $result;
226 liveuser 5587
 
3 liveuser 5588
					}#if end
226 liveuser 5589
 
3 liveuser 5590
				#函式說明:
5591
				#unicode的字串分割,比str_split的支援度高.
5592
				#回傳結果:
5593
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5594
				#$result["error"],錯誤訊息陣列.
3 liveuser 5595
				#$result["function"],當前執行的函數名稱.
5596
				#$result["content"],分割好的內容陣列.
5597
				#$result["length"],unicode字串的長度.
5598
				#必填參數:
5599
				#$conf["str"],字串",要分割的字串.
5600
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5601
				#可省略參數:
5602
				#$conf["length"],整數,分割的長度.
5603
				$conf["stringProcess::str_split_unicode"]["length"]=(int)$conf["input"];
5604
				#參考資料:
5605
				#http://php.net/manual/en/function.str-split.php
5606
				#備註:
5607
				#無.
5608
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5609
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5610
 
3 liveuser 5611
				#如果執行失敗
5612
				if($str_split_unicode["status"]==="false"){
226 liveuser 5613
 
3 liveuser 5614
					#設置執行失敗
5615
					$result["status"]="false";
226 liveuser 5616
 
3 liveuser 5617
					#設置執行錯誤訊息
5618
					$result["error"]=$str_split_unicode;
226 liveuser 5619
 
3 liveuser 5620
					#回傳結果
5621
					return $result;
226 liveuser 5622
 
5623
					}#if end
5624
 
3 liveuser 5625
				#針對剩下的每個bytes
5626
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5627
 
3 liveuser 5628
					#串接新的input參數bytes
5629
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5630
 
3 liveuser 5631
					}#foreach end
226 liveuser 5632
 
3 liveuser 5633
				}#if end
226 liveuser 5634
 
3 liveuser 5635
			#反之不存在指定bytes長度
226 liveuser 5636
 
3 liveuser 5637
			#但有指定字位長度
5638
			else if(isset($conf["lengthGrapheme"])){
226 liveuser 5639
 
3 liveuser 5640
				#取得輸入的字位長度
5641
				$grapheme_strlen=grapheme_strlen($conf["input"]);
226 liveuser 5642
 
3 liveuser 5643
				#如果不相等
5644
				if($grapheme_strlen!==(int)$conf["lengthGrapheme"]){
226 liveuser 5645
 
3 liveuser 5646
					#設置執行正常
5647
					$result["status"]="true";
226 liveuser 5648
 
3 liveuser 5649
					#設置檢查不通過
5650
					$result["passed"]="false";
226 liveuser 5651
 
3 liveuser 5652
					#設置詳細結果訊息陣列.
5653
					$result["content"][]="input參數(".$conf["input"].")的字位長度(".$grapheme_strlen.")與lengthGrapheme參數(".$conf["lengthGrapheme"].")不相等";
226 liveuser 5654
 
3 liveuser 5655
					#回傳結果
5656
					return $result;
226 liveuser 5657
 
3 liveuser 5658
					}#if end
226 liveuser 5659
 
3 liveuser 5660
				#取得新的input參數
5661
				$result["newInputArgu"]=grapheme_substr($conf["input"],0,$conf["lengthGrapheme"]);
226 liveuser 5662
 
3 liveuser 5663
				}#if end
226 liveuser 5664
 
3 liveuser 5665
			#反之不存在指定字位長度
226 liveuser 5666
 
3 liveuser 5667
			#但有指定 equalWith
5668
			else if(isset($conf["equalWith"])){
226 liveuser 5669
 
3 liveuser 5670
				#如果不相等
5671
				if($conf["input"]!==$conf["equalWith"]){
226 liveuser 5672
 
3 liveuser 5673
					#設置執行正常
5674
					$result["status"]="true";
226 liveuser 5675
 
3 liveuser 5676
					#設置檢查不通過
5677
					$result["passed"]="false";
226 liveuser 5678
 
3 liveuser 5679
					#設置詳細結果訊息陣列.
5680
					$result["content"][]="input參數(".$conf["input"].")與equalWith參數(".$conf["equalWith"].")不相等";
226 liveuser 5681
 
3 liveuser 5682
					#回傳結果
5683
					return $result;
226 liveuser 5684
 
3 liveuser 5685
					}#if end
226 liveuser 5686
 
3 liveuser 5687
				}#if end
226 liveuser 5688
 
3 liveuser 5689
			}#else(沒有關鍵字) end
226 liveuser 5690
 
3 liveuser 5691
		#設置執行正常
5692
		$result["status"]="true";
226 liveuser 5693
 
3 liveuser 5694
		#設置檢查通過
5695
		$result["passed"]="true";
226 liveuser 5696
 
3 liveuser 5697
		#回傳結果
5698
		return $result;
226 liveuser 5699
 
3 liveuser 5700
		}#checkStringFormat end
5701
 
5702
	/*
5703
	#函式說明:
5704
	#檢查字串是否符合 RFC 3339/ISO-8601 格式
5705
	#回傳結果:
5706
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5707
	#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
5708
	#$result["argu"],使用的參數.
5709
	#$result["function"],當前執行的函數.
5710
	#$result["error"],涵式錯誤訊息陣列.
5711
	#必填參數:
5712
	#$conf["input"],字串,要檢查格式的字串.
5713
	$conf["input"]="";
5714
	#可省略參數:
5715
	#$conf["UTC"],字串,是否要用當前時區的設定去換算成unixtime,預設為"true",代表要;反之為"false".
5716
	#$conf["UTC"]="true";
5717
	#參考資料:
5718
	#ISO 8601-2:2019=>https://www.rfc-editor.org/info/rfc3339
5719
	#rfc3339=>https://www.rfc-editor.org/rfc/rfc3339
5720
	#備註:
5721
	#無.
5722
	*/
5723
	public static function checkRFC3339(&$conf){
226 liveuser 5724
 
3 liveuser 5725
		#初始化要回傳的結果
5726
		$result=array();
226 liveuser 5727
 
3 liveuser 5728
		#設置當其函數名稱
5729
		$result["function"]=__FUNCTION__;
226 liveuser 5730
 
3 liveuser 5731
		#如果 $conf 不為陣列
5732
		if(gettype($conf)!="array"){
226 liveuser 5733
 
3 liveuser 5734
			#設置執行失敗
5735
			$result["status"]="false";
226 liveuser 5736
 
3 liveuser 5737
			#設置執行錯誤訊息
5738
			$result["error"][]="\$conf變數須為陣列形態";
5739
 
5740
			#如果傳入的參數為 null
5741
			if($conf==null){
226 liveuser 5742
 
3 liveuser 5743
				#設置執行錯誤訊息
5744
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 5745
 
3 liveuser 5746
				}#if end
5747
 
5748
			#回傳結果
5749
			return $result;
226 liveuser 5750
 
3 liveuser 5751
			}#if end
226 liveuser 5752
 
3 liveuser 5753
		#取得使用的參數
5754
		$result["argu"]=$conf;
226 liveuser 5755
 
3 liveuser 5756
		#檢查參數
5757
		#函式說明:
5758
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5759
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5760
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5761
		#$result["function"],當前執行的函式名稱.
5762
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5763
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5764
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5765
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
5766
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5767
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5768
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5769
		#必填寫的參數:
5770
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5771
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5772
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5773
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
226 liveuser 5774
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 5775
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
5776
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5777
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5778
		#可以省略的參數:
5779
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
5780
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("UTC");
5781
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
5782
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5783
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5784
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("UTC");
226 liveuser 5785
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 5786
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
5787
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5788
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
5789
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5790
		#$conf["arrayCountEqualCheck"][]=array();
5791
		#參考資料來源:
5792
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5793
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5794
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 5795
 
3 liveuser 5796
		#如果檢查失敗
5797
		if($checkResult["status"]==="false"){
226 liveuser 5798
 
3 liveuser 5799
			#設置執行失敗的訊息
5800
			$result["status"]="false";
226 liveuser 5801
 
3 liveuser 5802
			#設置錯誤訊息
5803
			$result["error"]=$checkResult;
226 liveuser 5804
 
3 liveuser 5805
			#回傳結果
5806
			return $result;
226 liveuser 5807
 
3 liveuser 5808
			}#if end
226 liveuser 5809
 
3 liveuser 5810
		#如果檢查不通過
5811
		if($checkResult["passed"]==="false"){
226 liveuser 5812
 
3 liveuser 5813
			#設置執行失敗的訊息
5814
			$result["status"]="false";
226 liveuser 5815
 
3 liveuser 5816
			#設置錯誤訊息
5817
			$result["error"]=$checkResult;
226 liveuser 5818
 
3 liveuser 5819
			#回傳結果
5820
			return $result;
226 liveuser 5821
 
3 liveuser 5822
			}#if end
226 liveuser 5823
 
3 liveuser 5824
		#函式說明:
5825
		#計算時間點距離1970/01/01多少秒,亦即unixtime.
5826
		#回傳結果:
5827
		#$result["stauts"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
5828
		#$result["error"],錯誤訊息陣列.
5829
		#$result["content"],時間點距離1970/01/01的多少秒.
5830
		#$result["oriDateAndTime"],原始輸入的內容,若replace0參數為"true",才會有該回傳內容.
5831
		#必填參數:
5832
		#$conf["dateAndTime"],字串,格式爲 2011-05-27 23:59:59.
5833
		$conf["time::caculateTimeAmount"]["dateAndTime"]=$conf["input"];
5834
		#可省略參數:
5835
		#$conf["UTC"],字串,是否要用當前時區的設定去換算成unixtime,預設為"false",代表不要;反之為"true".
5836
		$conf["time::caculateTimeAmount"]["UTC"]=$conf["UTC"];
5837
		#$conf["replace0"],字串,是否要將連續為0的內容替換成當下時間,預設為"true"代表要;反之為"false".
5838
		$conf["time::caculateTimeAmount"]["replace0"]="false";
5839
		#參考資料:
5840
		#無.
5841
		#備註:
5842
		#無.
5843
		$caculateTimeAmount=time::caculateTimeAmount($conf["time::caculateTimeAmount"]);
5844
		unset($conf["time::caculateTimeAmount"]);
226 liveuser 5845
 
3 liveuser 5846
		#如果檢查失敗
5847
		if($caculateTimeAmount["status"]==="false"){
226 liveuser 5848
 
3 liveuser 5849
			#設置執行正常的識別
5850
			$result["status"]="true";
226 liveuser 5851
 
3 liveuser 5852
			#設置檢查不通過
5853
			$result["passed"]="false";
226 liveuser 5854
 
3 liveuser 5855
			#設置回饋的訊息
5856
			$result["content"]=$caculateTimeAmount;
226 liveuser 5857
 
3 liveuser 5858
			#回傳結果
5859
			return $result;
226 liveuser 5860
 
3 liveuser 5861
			}#if end
226 liveuser 5862
 
3 liveuser 5863
		#設置執行正常的識別
5864
		$result["status"]="true";
226 liveuser 5865
 
3 liveuser 5866
		#設置檢查通過
5867
		$result["passed"]="true";
226 liveuser 5868
 
3 liveuser 5869
		#回傳結果
5870
		return $result;
226 liveuser 5871
 
3 liveuser 5872
		}#function checkRFC3339 end
5873
 
5874
	/*
5875
	#函式說明:
5876
	#處理各種錯誤與例外.
5877
	#回傳結果:
5878
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5879
	#$result["argu"],使用的參數.
5880
	#$result["function"],當前執行的函數.
5881
	#$result["error"],涵式錯誤訊息陣列.
5882
	#必填參數:
5883
	#無.
5884
	#可省略參數:
5885
	#$conf["allowCodition"],陣列,滿足什麼條件的錯誤跟例外要繼續執行而不中斷.
5886
	#$conf["allowCodition"]=array();
5887
	#$conf["debug"],字串,"true"代表遇到不允許繼續執行的例外時要輸出debug資訊;預設為"false";
5888
	#$conf["debug"]="false";
5889
	#$conf["format"],字串,遇到不允許的錯誤時,要用什麼格式呈現,預設為"html",其他選擇有"cmd".
5890
	#$conf["format"]="html";
5891
	#參考資料:
5892
	#無.
5893
	#備註:
5894
	#由於是使用 set_exception_handler 因此程式會結束執行.
5895
	*/
5896
	public static function setErrorHandler(&$conf=array()){
226 liveuser 5897
 
3 liveuser 5898
		#初始化要回傳的結果
5899
		$result=array();
5900
 
5901
		#取得當前執行的函數名稱
5902
		$result["function"]=__FUNCTION__;
226 liveuser 5903
 
3 liveuser 5904
		#取得參數
5905
		$result["argu"]=$conf;
5906
 
5907
		#如果 $conf 不為陣列
5908
		if(gettype($conf)!="array"){
5909
 
5910
			#設置執行失敗
5911
			$result["status"]="false";
5912
 
5913
			#設置執行錯誤訊息
5914
			$result["error"][]="\$conf變數須為陣列形態";
5915
 
5916
			#如果傳入的參數為 null
5917
			if(is_null($conf)){
5918
 
5919
				#設置執行錯誤訊息
5920
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5921
 
5922
				}#if end
5923
 
5924
			#回傳結果
5925
			return $result;
5926
 
5927
			}#if end
226 liveuser 5928
 
3 liveuser 5929
		#檢查參數
5930
		#函式說明:
5931
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5932
		#回傳結果:
5933
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5934
		#$result["error"],執行不正常結束的錯訊息陣列.
5935
		#$result["simpleError"],簡單表示的錯誤訊息.
5936
		#$result["function"],當前執行的函式名稱.
5937
		#$result["argu"],設置給予的參數.
5938
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5939
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5940
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5941
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5942
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5943
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5944
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5945
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5946
		#必填參數:
5947
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5948
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5949
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5950
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5951
		#可省略參數:
5952
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5953
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("stream","data");
5954
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
5955
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("resource","array");
5956
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5957
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5958
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5959
		#$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("stream");
5960
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5961
		#$conf["canBeEmpty"]=array();
5962
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5963
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("msgEndType","autoClose");
5964
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5965
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowCodition","debug","format");
5966
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5967
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string");
5968
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5969
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"false","html");
5970
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5971
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5972
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5973
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5974
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5975
		#$conf["disallowAllSkipableVarNotExist"]="";
5976
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5977
		#$conf["arrayCountEqualCheck"][]=array();
5978
		#參考資料:
5979
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5980
		#備註:
5981
		#無.
5982
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5983
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 5984
 
3 liveuser 5985
		#如果執行失敗
5986
		if($checkArguments["status"]==="false"){
226 liveuser 5987
 
3 liveuser 5988
			#設置執行失敗
5989
			$result["status"]="false";
226 liveuser 5990
 
3 liveuser 5991
			#設置錯誤資訊
5992
			$result["error"]=$checkArguments;
226 liveuser 5993
 
3 liveuser 5994
			#回傳結果
5995
			return $result;
226 liveuser 5996
 
3 liveuser 5997
			}#if end
226 liveuser 5998
 
3 liveuser 5999
		#如果檢查不通過
6000
		if($checkArguments["passed"]==="false"){
226 liveuser 6001
 
3 liveuser 6002
			#設置執行失敗
6003
			$result["status"]="false";
226 liveuser 6004
 
3 liveuser 6005
			#設置錯誤資訊
6006
			$result["error"]=$checkArguments;
226 liveuser 6007
 
3 liveuser 6008
			#回傳結果
6009
			return $result;
226 liveuser 6010
 
3 liveuser 6011
			}#if end
226 liveuser 6012
 
3 liveuser 6013
		#設置給本函式使用的 conf
6014
		self::$setErrorHandlerConf=$conf;
226 liveuser 6015
 
3 liveuser 6016
		#處理會導致程式無法執行的錯誤
6017
		set_error_handler(function($errno, $errstr, $errfile, $errline){
6018
			throw new \ErrorException($errstr, $errno, 0, $errfile, $errline);
6019
			});
6020
 
6021
		#處理非導致程式無法執行的錯誤
6022
		#參考資料:
6023
		#http://php.net/manual/en/class.exception.php
6024
		set_exception_handler(function($exception){
226 liveuser 6025
 
3 liveuser 6026
			#debug
6027
			#var_dump($exception);return true;
226 liveuser 6028
 
3 liveuser 6029
			#無窮迴圈
6030
			while(true){
226 liveuser 6031
 
3 liveuser 6032
				#取得給本函式使用的 conf
6033
				$conf=\qbpwcf\variableCheck::$setErrorHandlerConf;
226 liveuser 6034
 
3 liveuser 6035
				#debug
6036
				#var_dump(__LINE__,$conf);
226 liveuser 6037
 
3 liveuser 6038
				#初始化儲存錯誤訊息
6039
				$info=array();
226 liveuser 6040
 
3 liveuser 6041
				#取得描述
6042
				$info["msg"]="Uncaught exception: ".$exception->getMessage();
226 liveuser 6043
 
3 liveuser 6044
				#取得出錯檔案
6045
				$info["file"]="File: ".$exception->getFile();
226 liveuser 6046
 
3 liveuser 6047
				#取得出錯行數
6048
				$info["line"]="Line: ".$exception->getLine();
226 liveuser 6049
 
3 liveuser 6050
				#取得錯誤代碼
6051
				$info["code"]="The exception code is: ".$exception->getCode();
226 liveuser 6052
 
3 liveuser 6053
				#函式說明:
6054
				#檢查多個字串中的每個字串是否有多個關鍵字
6055
				#回傳結果:
6056
				#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
6057
				#$result["function"],當前執行的函數名稱.
6058
				#$result["error"],錯誤訊息.
6059
				#$result["argu"],使用的參數.
6060
				#$result["foundedTrueKey"],結果為"true"的被搜尋元素key陣列,與其數值內容.
6061
				#$result["foundedKeyWords"],找到的關鍵字陣列.
6062
				#$result["foundedFalseKey"],結果為"false"的被搜尋元素key陣列,與其數值內容.
6063
				#$result["foundedTrueKeyWords"],二維陣列,各個字串有找到的關鍵字陣列.
6064
				#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
6065
				#必填參數:
6066
				#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
6067
				$conf["search::findManyKeyWordsFromManyString"]["keyWords"]=$conf["allowCodition"];
6068
				#$conf["stringArray"],字串陣列,要被搜尋的字串內容陣列.
6069
				$conf["search::findManyKeyWordsFromManyString"]["stringArray"]=$info;
6070
				#可省略參數:
6071
				#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為"false"不需要完全符合.
6072
				#$conf["completeEqual"]="true";
6073
				#參考資料:
6074
				#無.
6075
				#備註:
6076
				#無.
6077
				$findManyKeyWordsFromManyString=search::findManyKeyWordsFromManyString($conf["search::findManyKeyWordsFromManyString"]);
6078
				unset($conf["search::findManyKeyWordsFromManyString"]);
226 liveuser 6079
 
3 liveuser 6080
				#如果執行失敗
6081
				if($findManyKeyWordsFromManyString["status"]==="false"){
226 liveuser 6082
 
3 liveuser 6083
					#設置執行失敗
6084
					$result["status"]="false";
226 liveuser 6085
 
3 liveuser 6086
					#設置錯誤資訊
6087
					$result["error"]=$findManyKeyWordsFromManyString;
226 liveuser 6088
 
3 liveuser 6089
					#debug
6090
					var_dump(__LINE__,$result);
226 liveuser 6091
 
3 liveuser 6092
					#結束執行,回傳代碼1給shell
6093
					exit(1);
226 liveuser 6094
 
3 liveuser 6095
					}#if end
6096
 
6097
				#如果有符合可以繼續執行的條件
6098
				if(count($findManyKeyWordsFromManyString["foundedTrueKey"])>0){
226 liveuser 6099
 
3 liveuser 6100
					#debug
6101
					var_dump(__LINE__,$findManyKeyWordsFromManyString);
226 liveuser 6102
 
3 liveuser 6103
					#結束while
6104
					break;
226 liveuser 6105
 
3 liveuser 6106
					}#if end
226 liveuser 6107
 
3 liveuser 6108
				#如果有要debug
6109
				if($conf["debug"]==="true"){
226 liveuser 6110
 
3 liveuser 6111
					#判斷要呈現的方式
6112
					switch($conf["format"]){
226 liveuser 6113
 
3 liveuser 6114
						#如果是 html
6115
						case "html":
226 liveuser 6116
 
3 liveuser 6117
							#呈現錯誤訊息
6118
							echo "<p>".PHP_EOL;
6119
							echo "Uncaught exception: ".$exception->getMessage()."<br>".PHP_EOL;
6120
							echo "File: ".$exception->getFile()."<br>".PHP_EOL;
6121
							echo "Line: ".$exception->getLine()."<br>".PHP_EOL;
6122
							echo "Trace: ".print_r($exception->getTrace(),true)."<br>".PHP_EOL;
6123
							echo "The exception code is: ".$exception->getCode()."<br>".PHP_EOL;
226 liveuser 6124
 
3 liveuser 6125
							#跳出 switch
6126
							break;
226 liveuser 6127
 
3 liveuser 6128
						#如果是 cmd
6129
						case "cmd";
226 liveuser 6130
 
3 liveuser 6131
							#呈現錯誤訊息
6132
							echo PHP_EOL;
6133
							echo "Uncaught exception: ".$exception->getMessage().PHP_EOL;
6134
							echo "File: ".$exception->getFile().PHP_EOL;
6135
							echo "Line: ".$exception->getLine().PHP_EOL;
6136
							echo "Trace: ".print_r($exception->getTrace(),true).PHP_EOL;
6137
							echo "The exception code is: ".$exception->getCode().PHP_EOL;
226 liveuser 6138
 
3 liveuser 6139
							#跳出 switch
6140
							break;
226 liveuser 6141
 
3 liveuser 6142
						#其他格式
6143
						default:
226 liveuser 6144
 
3 liveuser 6145
							#用var_dump
6146
							var_dump($info);
226 liveuser 6147
 
3 liveuser 6148
						}#switch end
226 liveuser 6149
 
3 liveuser 6150
					}#if end
226 liveuser 6151
 
3 liveuser 6152
				#debug
6153
				#var_dump(__LINE__,$findManyKeyWordsFromManyString);
226 liveuser 6154
 
3 liveuser 6155
				#結束執行,回傳代碼1給shell
6156
				exit(1);
226 liveuser 6157
 
3 liveuser 6158
				}#while end
226 liveuser 6159
 
3 liveuser 6160
			#debug
6161
			#var_dump(__LINE__,"passed");
226 liveuser 6162
 
3 liveuser 6163
			#視為可以繼續執行
6164
			return true;
226 liveuser 6165
 
3 liveuser 6166
			});
226 liveuser 6167
 
3 liveuser 6168
		}#funciton setErrorHandler end
6169
 
6170
	}#class variableCheck end
6171
 
6172
?>