Subversion Repositories php-qbpwcf

Rev

Rev 326 | Go to most recent revision | 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();
1572
	#參考資料:
1573
	#array_keys=>http://php.net/manual/en/function.array-keys.php
1574
	#備註:
1575
	#無.
1576
	*/
1577
	public static function checkArguments(&$conf){
226 liveuser 1578
 
3 liveuser 1579
		#初始化要回傳的結果
1580
		$result=array();
1581
 
1582
		#設置當其函數名稱
1583
		$result["function"]=__FUNCTION__;
1584
 
1585
		#如果 $conf 不為陣列
1586
		if(gettype($conf)!="array"){
1587
 
1588
			#設置執行失敗
1589
			$result["status"]="false";
1590
 
1591
			#設置執行錯誤訊息
1592
			$result["error"][]="\$conf變數須為陣列形態";
1593
 
1594
			#如果傳入的參數為 null
182 liveuser 1595
			if($conf===null){
3 liveuser 1596
 
1597
				#設置執行錯誤訊息
1598
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
1599
 
1600
				}#if end
1601
 
1602
			#函式說明:
1603
			#取得簡單的錯誤訊息
1604
			#回傳結果:
1605
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1606
			#$result["content"],結果.
1607
			#$result["function"],當前執行的函數
1608
			#$result["error"],涵式錯誤訊息陣列
1609
			#必填參數:
1610
			$conf["variableCheck::getSimpleError"]=array();
1611
			#$conf["error"],陣列,要處理的變數.
1612
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1613
			#可省略參數:
1614
			#無
1615
			#參考資料:
1616
			#無.
1617
			#備註:
1618
			#無.
1619
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1620
			unset($conf["variableCheck::getSimpleError"]);
1621
 
1622
			#如果執行失敗
1623
			if($getSimpleError["status"]==="false"){
226 liveuser 1624
 
3 liveuser 1625
				#設置執行錯誤訊息
1626
				$result["error"][]=$getSimpleError;
226 liveuser 1627
 
3 liveuser 1628
				#回傳結果
1629
				return $result;
1630
 
1631
				}#if end
1632
 
1633
			#設置 $simpleError
1634
			$result["simpleError"]=$getSimpleError["content"];
1635
 
1636
			#回傳結果
1637
			return $result;
1638
 
1639
			}#if end
1640
 
1641
		#設置放置的參數
1642
		$result["argu"]=$conf;
1643
 
1644
		#檢查必填參數
1645
		#函式說明:
1646
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1647
		#回傳結果:
1648
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1649
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
1650
		#$result["function"],當前執行的函式名稱.
1651
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1652
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1653
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1654
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1655
		#必填參數:
1656
		$conf["variableCheck.isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
1657
		$conf["variableCheck.isexistMulti"]["variableCheck"]=array("varInput","referenceVarKey");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1658
		#可省略參數:
1659
		$conf["variableCheck.isexistMulti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1660
		$conf["variableCheck.isexistMulti"]["canBeEmptyString"]="true";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1661
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
1662
		#$conf["variableCheck.isexistMulti"]["canNotBeEmpty"]=array();
1663
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
1664
		#$conf["variableCheck.isexistMulti"]["canBeEmpty"]=array();
1665
		$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
1666
		unset($conf["variableCheck.isexistMulti"]);
1667
 
1668
		#如果檢查失敗
1669
		if($checkResult["status"]==="false"){
1670
 
1671
			#設置錯誤識別
1672
			$result["status"]="false";
1673
 
1674
			#設置錯誤訊息
1675
			$result["error"]=$checkResult;
1676
 
1677
			#函式說明:
1678
			#取得簡單的錯誤訊息
1679
			#回傳結果:
1680
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1681
			#$result["content"],結果.
1682
			#$result["function"],當前執行的函數
1683
			#$result["error"],涵式錯誤訊息陣列
1684
			#必填參數:
1685
			$conf["variableCheck::getSimpleError"]=array();
1686
			#$conf["error"],陣列,要處理的變數.
1687
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1688
			#可省略參數:
1689
			#無
1690
			#參考資料:
1691
			#無.
1692
			#備註:
1693
			#無.
1694
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1695
			unset($conf["variableCheck::getSimpleError"]);
1696
 
1697
			#如果執行失敗
1698
			if($getSimpleError["status"]==="false"){
226 liveuser 1699
 
3 liveuser 1700
				#設置執行錯誤訊息
1701
				$result["error"][]=$getSimpleError;
226 liveuser 1702
 
3 liveuser 1703
				#回傳結果
1704
				return $result;
1705
 
1706
				}#if end
1707
 
1708
			#設置 $simpleError
1709
			$result["simpleError"]=$getSimpleError["content"];
1710
 
1711
			#回傳結果
1712
			return $result;
1713
 
1714
			}#if end
1715
 
1716
		#如果檢查不通過
1717
		if($checkResult["passed"]==="false"){
1718
 
1719
			#設置執正常
1720
			$result["status"]="true";
226 liveuser 1721
 
3 liveuser 1722
			#設置錯誤識別
1723
			$result["passed"]="false";
1724
 
1725
			#設置錯誤訊息
1726
			$result["error"]=$checkResult;
1727
 
1728
			#函式說明:
1729
			#取得簡單的錯誤訊息
1730
			#回傳結果:
1731
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1732
			#$result["content"],結果.
1733
			#$result["function"],當前執行的函數
1734
			#$result["error"],涵式錯誤訊息陣列
1735
			#必填參數:
1736
			$conf["variableCheck::getSimpleError"]=array();
1737
			#$conf["error"],陣列,要處理的變數.
1738
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1739
			#可省略參數:
1740
			#無
1741
			#參考資料:
1742
			#無.
1743
			#備註:
1744
			#無.
1745
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1746
			unset($conf["variableCheck::getSimpleError"]);
1747
 
1748
			#如果執行失敗
1749
			if($getSimpleError["status"]==="false"){
226 liveuser 1750
 
3 liveuser 1751
				#設置執行錯誤訊息
1752
				$result["error"][]=$getSimpleError;
226 liveuser 1753
 
3 liveuser 1754
				#回傳結果
1755
				return $result;
1756
 
1757
				}#if end
1758
 
1759
			#設置 $simpleError
1760
			$result["simpleError"]=$getSimpleError["content"];
1761
 
1762
			#回傳結果
1763
			return $result;
1764
 
1765
			}#if end
1766
 
1767
		#檢查可省略參數
1768
		#函式說明:
1769
		#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
1770
		#回傳結果:
1771
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1772
		#$result["error"],錯誤訊息陣列.
1773
		#$result["function"],當前執行的函式名稱.
1774
		#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
1775
		#必填參數:
1776
		#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
1777
		$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf;
1778
		#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
1779
		$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array("mustBeFilledVariableName","mustBeFilledVariableType","canBeEmptyString","canNotBeEmpty","canBeEmpty","skipableVariableCanNotBeEmpty","skipableVariableName","skipableVariableType","skipableVarDefaultValue","arrayCountEqualCheck","disallowAllSkipableVarIsEmpty","disallowAllSkipableVarNotExist","disallowAllSkipableVarIsEmptyArray");
1780
		#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
1781
		$argu=&$conf;
1782
		#可省略參數:
1783
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
1784
		$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array("array","array","string","array","array","array","array","array","array","array","string","string","string");
1785
		#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,"null"代表不指定.
1786
		$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array(null,null,"true",null,null,null,null,null,null,null,"false","false","false");
1787
		$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
1788
		unset($conf["variableCheck.checkSkipableVarType"]);
1789
 
1790
		#如果檢查失敗
1791
		if($checkResult["status"]=="false"){
1792
 
1793
			#設置錯誤識別
1794
			$result["status"]="false";
1795
 
1796
			#設置錯誤訊息
1797
			$result["error"]=$checkResult;
1798
 
1799
			#函式說明:
1800
			#取得簡單的錯誤訊息
1801
			#回傳結果:
1802
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1803
			#$result["content"],結果.
1804
			#$result["function"],當前執行的函數
1805
			#$result["error"],涵式錯誤訊息陣列
1806
			#必填參數:
1807
			$conf["variableCheck::getSimpleError"]=array();
1808
			#$conf["error"],陣列,要處理的變數.
1809
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1810
			#可省略參數:
1811
			#無
1812
			#參考資料:
1813
			#無.
1814
			#備註:
1815
			#無.
1816
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1817
			unset($conf["variableCheck::getSimpleError"]);
1818
 
1819
			#如果執行失敗
1820
			if($getSimpleError["status"]==="false"){
226 liveuser 1821
 
3 liveuser 1822
				#設置執行錯誤訊息
1823
				$result["error"][]=$getSimpleError;
226 liveuser 1824
 
3 liveuser 1825
				#回傳結果
1826
				return $result;
1827
 
1828
				}#if end
1829
 
1830
			#設置 $simpleError
1831
			$result["simpleError"]=$getSimpleError["content"];
1832
 
1833
			#回傳結果
1834
			return $result;
1835
 
1836
			}#if end
1837
 
1838
		#如果檢查不通過
1839
		if($checkResult["passed"]=="false"){
1840
 
1841
			#設置執正常
1842
			$result["status"]="true";
226 liveuser 1843
 
3 liveuser 1844
			#設置錯誤識別
1845
			$result["passed"]="false";
1846
 
1847
			#設置錯誤訊息
1848
			$result["error"]=$checkResult;
1849
 
1850
			#函式說明:
1851
			#取得簡單的錯誤訊息
1852
			#回傳結果:
1853
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1854
			#$result["content"],結果.
1855
			#$result["function"],當前執行的函數
1856
			#$result["error"],涵式錯誤訊息陣列
1857
			#必填參數:
1858
			$conf["variableCheck::getSimpleError"]=array();
1859
			#$conf["error"],陣列,要處理的變數.
1860
			$conf["variableCheck::getSimpleError"]["error"]=$result;
1861
			#可省略參數:
1862
			#無
1863
			#參考資料:
1864
			#無.
1865
			#備註:
1866
			#無.
1867
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1868
			unset($conf["variableCheck::getSimpleError"]);
1869
 
1870
			#如果執行失敗
1871
			if($getSimpleError["status"]==="false"){
226 liveuser 1872
 
3 liveuser 1873
				#設置執行錯誤訊息
1874
				$result["error"][]=$getSimpleError;
226 liveuser 1875
 
3 liveuser 1876
				#回傳結果
1877
				return $result;
1878
 
1879
				}#if end
1880
 
1881
			#設置 $simpleError
1882
			$result["simpleError"]=$getSimpleError["content"];
1883
 
1884
			#回傳結果
1885
			return $result;
1886
 
1887
			}#if end
1888
 
1889
		#如果有設置 $conf["mustBeFilledVariableName"] 跟 $conf["mustBeFilledVariableType"]
1890
		if( isset($conf["mustBeFilledVariableName"])===true && isset($conf["mustBeFilledVariableType"])===true ){
1891
 
1892
			#檢查輸入參數的數量是否不一致
1893
			if(count($conf["mustBeFilledVariableName"])!==count($conf["mustBeFilledVariableType"])){
1894
 
1895
				#設置錯誤識別
1896
				$result["status"]="false";
1897
 
1898
				#設置錯誤訊息
1899
				$result["error"][]="參數 \"mustBeFilledVariableName\" 與 \"mustBeFilledVariableType\" 的數量要一致";
1900
 
1901
				#函式說明:
1902
				#取得簡單的錯誤訊息
1903
				#回傳結果:
1904
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1905
				#$result["content"],結果.
1906
				#$result["function"],當前執行的函數
1907
				#$result["error"],涵式錯誤訊息陣列
1908
				#必填參數:
1909
				$conf["variableCheck::getSimpleError"]=array();
1910
				#$conf["error"],陣列,要處理的變數.
1911
				$conf["variableCheck::getSimpleError"]["error"]=$result;
1912
				#可省略參數:
1913
				#無
1914
				#參考資料:
1915
				#無.
1916
				#備註:
1917
				#無.
1918
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
1919
				unset($conf["variableCheck::getSimpleError"]);
1920
 
1921
				#如果執行失敗
1922
				if($getSimpleError["status"]==="false"){
226 liveuser 1923
 
3 liveuser 1924
					#設置執行錯誤訊息
1925
					$result["error"][]=$getSimpleError;
226 liveuser 1926
 
3 liveuser 1927
					#回傳結果
1928
					return $result;
1929
 
1930
					}#if end
1931
 
1932
				#設置 $simpleError
1933
				$result["simpleError"]=$getSimpleError["content"];
1934
 
1935
				#回傳結果
1936
				return $result;
1937
 
1938
				}#if end
1939
 
1940
			#函式說明:
1941
			#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
1942
			#回傳結果:
1943
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1944
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
1945
			#$result["function"],當前執行的函式名稱.
1946
			#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
1947
			#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
1948
			#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
1949
			#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
1950
			#必填參數:
1951
			$conf["variableCheck.isexistMulti"]["varInput"]=$conf["varInput"];#要檢查的陣列變數
1952
			$conf["variableCheck.isexistMulti"]["variableCheck"]=$conf["mustBeFilledVariableName"];#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
1953
			#可省略參數:
1954
			$conf["variableCheck.isexistMulti"]["variableType"]=$conf["mustBeFilledVariableType"];#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double");
1955
			#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
1956
			$conf["variableCheck.isexistMulti"]["canBeEmptyString"]=$conf["canBeEmptyString"];
1957
 
1958
			#如果設定必填參數可以為空字串或集合
1959
			if($conf["canBeEmptyString"]=="true"){
1960
 
1961
				#如果有設定要排除的不能為空字串或空集合的變數
1962
				if(isset($conf["canNotBeEmpty"])){
1963
 
1964
					#設定其參數
1965
					$conf["variableCheck.isexistMulti"]["canNotBeEmpty"]=$conf["canNotBeEmpty"];
1966
 
1967
					}#if end
1968
 
1969
				}#if end
1970
 
1971
			#如果設定必填參數不可以為空字串或集合
1972
			else if($conf["canBeEmptyString"]=="false"){
1973
 
1974
				#如果有設定要排除的不能為空字串或空集合的變數
1975
				if(isset($conf["canBeEmpty"])){
1976
 
1977
					#設定其參數
1978
					$conf["variableCheck.isexistMulti"]["canBeEmpty"]=$conf["canBeEmpty"];
1979
 
1980
					}#if end
1981
 
1982
				}#if end
1983
 
1984
			$checkResult=variableCheck::isexistMulti($conf["variableCheck.isexistMulti"]);
1985
			unset($conf["variableCheck.isexistMulti"]);
1986
 
1987
			#如果檢查失敗
1988
			if($checkResult["status"]=="false"){
1989
 
1990
				#設置錯誤識別
1991
				$result["status"]="false";
1992
 
1993
				#設置錯誤訊息
1994
				$result["error"]=$checkResult;
1995
 
1996
				#函式說明:
1997
				#取得簡單的錯誤訊息
1998
				#回傳結果:
1999
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2000
				#$result["content"],結果.
2001
				#$result["function"],當前執行的函數
2002
				#$result["error"],涵式錯誤訊息陣列
2003
				#必填參數:
2004
				$conf["variableCheck::getSimpleError"]=array();
2005
				#$conf["error"],陣列,要處理的變數.
2006
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2007
				#可省略參數:
2008
				#無
2009
				#參考資料:
2010
				#無.
2011
				#備註:
2012
				#無.
2013
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2014
				unset($conf["variableCheck::getSimpleError"]);
2015
 
2016
				#如果執行失敗
2017
				if($getSimpleError["status"]==="false"){
226 liveuser 2018
 
3 liveuser 2019
					#設置執行錯誤訊息
2020
					$result["error"][]=$getSimpleError;
226 liveuser 2021
 
3 liveuser 2022
					#回傳結果
2023
					return $result;
2024
 
2025
					}#if end
2026
 
2027
				#設置 $simpleError
2028
				$result["simpleError"]=$getSimpleError["content"];
2029
 
2030
				#回傳結果
2031
				return $result;
226 liveuser 2032
 
3 liveuser 2033
				}#if end
2034
 
2035
			#如果檢查不通過
2036
			if($checkResult["passed"]=="false"){
2037
 
2038
				#設置執正常
2039
				$result["status"]="true";
226 liveuser 2040
 
3 liveuser 2041
				#設置錯誤識別
2042
				$result["passed"]="false";
2043
 
2044
				#設置錯誤訊息
2045
				$result["error"]=$checkResult;
2046
 
2047
				#函式說明:
2048
				#取得簡單的錯誤訊息
2049
				#回傳結果:
2050
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2051
				#$result["content"],結果.
2052
				#$result["function"],當前執行的函數
2053
				#$result["error"],涵式錯誤訊息陣列
2054
				#必填參數:
2055
				$conf["variableCheck::getSimpleError"]=array();
2056
				#$conf["error"],陣列,要處理的變數.
2057
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2058
				#可省略參數:
2059
				#無
2060
				#參考資料:
2061
				#無.
2062
				#備註:
2063
				#無.
2064
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2065
				unset($conf["variableCheck::getSimpleError"]);
2066
 
2067
				#如果執行失敗
2068
				if($getSimpleError["status"]==="false"){
226 liveuser 2069
 
3 liveuser 2070
					#設置執行錯誤訊息
2071
					$result["error"][]=$getSimpleError;
226 liveuser 2072
 
3 liveuser 2073
					#回傳結果
2074
					return $result;
2075
 
2076
					}#if end
2077
 
2078
				#設置 $simpleError
2079
				$result["simpleError"]=$getSimpleError["content"];
2080
 
2081
				#回傳結果
2082
				return $result;
2083
 
2084
				}#if end
2085
 
2086
			}#if end
2087
 
2088
		#如果 $conf["skipableVariableName"] 與 $conf["skipableVariableType"] 存在
2089
		if(isset($conf["skipableVariableName"]) && isset($conf["skipableVariableType"])){
2090
 
2091
			#如果 $conf["skipableVariableName"] 與 $conf["skipableVariableType"] 的元素數量不一致
2092
			if(count($conf["skipableVariableName"])!=count($conf["skipableVariableType"])){
2093
 
2094
				#設置錯誤識別
2095
				$result["status"]="false";
2096
 
2097
				#設置錯誤識別
2098
				$result["passed"]="false";
2099
 
2100
				#設置錯誤訊息
2101
				$result["error"][]="\$conf[\"skipableVariableName\"] 與 \$conf[\"skipableVariableType\"] 的元素數量不一致";
2102
 
2103
				#函式說明:
2104
				#取得簡單的錯誤訊息
2105
				#回傳結果:
2106
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2107
				#$result["content"],結果.
2108
				#$result["function"],當前執行的函數
2109
				#$result["error"],涵式錯誤訊息陣列
2110
				#必填參數:
2111
				$conf["variableCheck::getSimpleError"]=array();
2112
				#$conf["error"],陣列,要處理的變數.
2113
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2114
				#可省略參數:
2115
				#無
2116
				#參考資料:
2117
				#無.
2118
				#備註:
2119
				#無.
2120
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2121
				unset($conf["variableCheck::getSimpleError"]);
2122
 
2123
				#如果執行失敗
2124
				if($getSimpleError["status"]==="false"){
226 liveuser 2125
 
3 liveuser 2126
					#設置執行錯誤訊息
2127
					$result["error"][]=$getSimpleError;
226 liveuser 2128
 
3 liveuser 2129
					#回傳結果
2130
					return $result;
2131
 
2132
					}#if end
2133
 
2134
				#設置 $simpleError
2135
				$result["simpleError"]=$getSimpleError["content"];
2136
 
2137
				#回傳結果
2138
				return $result;
2139
 
2140
				}#if end
2141
 
2142
			}#if end
2143
 
2144
		#如果 $conf["skipableVariableName"] 有設置
2145
		if(isset($conf["skipableVariableName"]) && isset($conf["skipableVarDefaultValue"])){
2146
 
2147
			#如果 $conf["skipableVariableName"] 與 $conf["skipableVarDefaultValue"] 的元素數量不一致
2148
			if(count($conf["skipableVariableName"])!=count($conf["skipableVarDefaultValue"])){
2149
 
2150
				#設置執正常
2151
				$result["status"]="true";
226 liveuser 2152
 
3 liveuser 2153
				#設置錯誤識別
2154
				$result["passed"]="false";
2155
 
2156
				#設置錯誤訊息
2157
				$result["error"][]="\$conf[\"skipableVariableName\"] 與 \$conf[\"skipableVarDefaultValue\"] 的元素數量不一致";
2158
 
2159
				#函式說明:
2160
				#取得簡單的錯誤訊息
2161
				#回傳結果:
2162
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2163
				#$result["content"],結果.
2164
				#$result["function"],當前執行的函數
2165
				#$result["error"],涵式錯誤訊息陣列
2166
				#必填參數:
2167
				$conf["variableCheck::getSimpleError"]=array();
2168
				#$conf["error"],陣列,要處理的變數.
2169
				$conf["variableCheck::getSimpleError"]["error"]=$result;
2170
				#可省略參數:
2171
				#無
2172
				#參考資料:
2173
				#無.
2174
				#備註:
2175
				#無.
2176
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2177
				unset($conf["variableCheck::getSimpleError"]);
2178
 
2179
				#如果執行失敗
2180
				if($getSimpleError["status"]==="false"){
226 liveuser 2181
 
3 liveuser 2182
					#設置執行錯誤訊息
2183
					$result["error"][]=$getSimpleError;
226 liveuser 2184
 
3 liveuser 2185
					#回傳結果
2186
					return $result;
2187
 
2188
					}#if end
2189
 
2190
				#設置 $simpleError
2191
				$result["simpleError"]=$getSimpleError["content"];
2192
 
2193
				#回傳結果
2194
				return $result;
2195
 
2196
				}#if end
2197
 
2198
			}#if end
2199
 
2200
		#如果有可省略變數的型態限定
2201
		if(isset($conf["skipableVariableType"])){
2202
 
2203
			#如果可省略變數有 string 型別
2204
			if(in_array("string",$conf["skipableVariableType"])){
2205
 
2206
				#如果 $conf["disallowAllSkipableVarIsEmpty"] 設置為 "true"
2207
				if($conf["disallowAllSkipableVarIsEmpty"]==="true"){
2208
 
2209
					#設置檢查不通過
2210
					$pass=false;
2211
 
2212
					#如果沒有指定可省略參數
2213
					if(!isset($conf["skipableVariableName"])){
2214
 
2215
						#設置通過檢測
2216
						$pass=true;
2217
 
2218
						}#if end
2219
 
2220
					#反之若可省略參數大於0
2221
					else if(count($conf["skipableVariableName"])>0){
2222
 
2223
						#設置是否有設置可省略變數
2224
						$haveSkipVar=false;
2225
 
2226
						#針對每個可省略的變數
2227
						foreach($conf["skipableVariableName"] as $varKey=>$varName){
2228
 
2229
							#如果該可省略變數有設置
2230
							if(isset($conf["varInput"][$varName])){
2231
 
2232
								#設置有設置可省略變數
2233
								$haveSkipVar=true;
2234
 
2235
								#如果是字串型態
2236
								if(gettype($conf["varInput"][$varName])==="string"){
2237
 
2238
									#如果是空字串
2239
									if($conf["varInput"][$varName]!==""){
2240
 
2241
										#設置通過檢測
2242
										$pass=true;
2243
 
2244
										#跳過檢查
2245
										break;
2246
 
2247
										}#if end
2248
 
2249
									}#if end
2250
 
2251
								}#if end
2252
 
2253
							}#foreach end
2254
 
2255
						#如果未設置可省略參數
2256
						if(!$haveSkipVar){
2257
 
2258
							#設置通過檢測
2259
							$pass=true;
2260
 
2261
							}#if end
2262
 
2263
						}#if end
2264
 
2265
					#反之
2266
					else{
2267
 
2268
						#設置通過檢測
2269
						$pass=true;
2270
 
2271
						}#else end
2272
 
2273
					#如果檢查不通過
2274
					if(!$pass){
2275
 
2276
						#設置執行正常
2277
						$result["status"]="true";
2278
 
2279
						#設置檢查不通過
2280
						$result["passed"]="false";
2281
 
2282
						#設置錯誤訊息
2283
						$result["warning"][]="可省略參數不都得為空字串";
2284
 
2285
						#回傳結果
2286
						return $result;
2287
 
2288
						}#if end
2289
 
2290
					}#if end
2291
 
2292
				}#if end
2293
 
2294
			#如果可省略變數有 array 型別
2295
			if(in_array("array",$conf["skipableVariableType"])){
2296
 
2297
				#如果 $conf["disallowAllSkipableVarIsEmptyArray"] 為 "true"
2298
				if($conf["disallowAllSkipableVarIsEmptyArray"]==="true"){
2299
 
2300
					#設置檢查不通過
2301
					$pass=false;
2302
 
2303
					#如果沒有指定可省略參數
2304
					if(!isset($conf["skipableVariableName"])){
2305
 
2306
						#設置通過檢測
2307
						$pass=true;
2308
 
2309
						}#if end
2310
 
2311
					#反之若可省略參數大於0
2312
					else if(count($conf["skipableVariableName"])>0){
2313
 
2314
						#針對每個可省略的變數
2315
						foreach($conf["skipableVariableName"] as $varKey=>$varName){
2316
 
2317
							#如果該可省略變數有設置
2318
							if(isset($conf["varInput"][$varName])){
2319
 
2320
								#如果是陣列型態
2321
								if(gettype($conf["varInput"][$varName])==="array"){
2322
 
2323
									#函式說明:
2324
									#檢查一陣列變數是否為空陣列
2325
									#回傳結果:
2326
									#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2327
									#$result["content"],css動畫設定的語法
2328
									#$result["function"],當前執行的函數
2329
									#$result["error"],涵式錯誤訊息陣列
2330
									#$result["empty"],"true"代表為空陣列,"false"代表不為空陣列.
2331
									#必填參數:
2332
									#$conf["var"],陣列變數.
2333
									$conf["variableCheck::emptyArray"]["var"]=$conf["varInput"][$varName];
2334
									#備註:
2335
									#無
2336
									$emptyArray=variableCheck::emptyArray($conf["variableCheck::emptyArray"]);
2337
									unset($conf["variableCheck::emptyArray"]);
2338
 
2339
									#如果檢查失敗
2340
									if($emptyArray["status"]==="false"){
2341
 
2342
										#設置執行失敗
2343
										$result["status"]="false";
2344
 
2345
										#設置錯誤訊息
2346
										$result["error"]=$emptyArray;
2347
 
2348
										#函式說明:
2349
										#取得簡單的錯誤訊息
2350
										#回傳結果:
2351
										#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2352
										#$result["content"],結果.
2353
										#$result["function"],當前執行的函數
2354
										#$result["error"],涵式錯誤訊息陣列
2355
										#必填參數:
2356
										$conf["variableCheck::getSimpleError"]=array();
2357
										#$conf["error"],陣列,要處理的變數.
2358
										$conf["variableCheck::getSimpleError"]["error"]=$result;
2359
										#可省略參數:
2360
										#無
2361
										#參考資料:
2362
										#無.
2363
										#備註:
2364
										#無.
2365
										$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2366
										unset($conf["variableCheck::getSimpleError"]);
2367
 
2368
										#如果執行失敗
2369
										if($getSimpleError["status"]==="false"){
226 liveuser 2370
 
3 liveuser 2371
											#設置執行錯誤訊息
2372
											$result["error"][]=$getSimpleError;
226 liveuser 2373
 
3 liveuser 2374
											#回傳結果
2375
											return $result;
2376
 
2377
											}#if end
2378
 
2379
										#設置 $simpleError
2380
										$result["simpleError"]=$getSimpleError["content"];
2381
 
2382
										#回傳結果
2383
										return $result;
2384
 
2385
										}#if end
2386
 
2387
									#如果不是空陣列
2388
									if($emptyArray["empty"]==="false"){
2389
 
2390
										#設置通過檢測
2391
										$pass=true;
2392
 
2393
										#跳過檢查
2394
										break;
2395
 
2396
										}#if end
2397
 
2398
									}#if end
2399
 
2400
								}#if end
2401
 
2402
							}#foreach end
2403
 
2404
						}#if end
2405
 
2406
					#反之
2407
					else{
2408
 
2409
						#設置通過檢測
2410
						$pass=true;
2411
 
2412
						}#else end
2413
 
2414
					#如果檢查不通過
2415
					if(!$pass){
2416
 
2417
						#設置執行正常
2418
						$result["status"]="true";
2419
 
2420
						#設置檢查不通過
2421
						$result["passed"]="false";
2422
 
2423
						#設置錯誤訊息
2424
						$result["warning"][]="可省略參數不都得為空陣列";
2425
 
2426
						#回傳結果
2427
						return $result;
2428
 
2429
						}#if end
2430
 
2431
					}#if end
2432
 
2433
				}#else end
226 liveuser 2434
 
3 liveuser 2435
			#如果可省略變數有 any 型別
2436
			if(in_array("any",$conf["skipableVariableType"])){
226 liveuser 2437
 
3 liveuser 2438
				#儲存可以為任意形態的變數
2439
				$anyTypeVarName=array();
226 liveuser 2440
 
3 liveuser 2441
				#針對每個可省略參數的形態
2442
				foreach($conf["skipableVariableType"] as $varKey=>$varType){
226 liveuser 2443
 
3 liveuser 2444
					#如果找到形態為any的變數形態
2445
					if($varType==="any"){
226 liveuser 2446
 
3 liveuser 2447
						#儲存形態為 any 的可省略變數名稱
2448
						$anyTypeVarName[]=$conf["skipableVariableName"][$varKey];
226 liveuser 2449
 
3 liveuser 2450
						}#if end
226 liveuser 2451
 
2452
					}#foreach end
2453
 
3 liveuser 2454
				#針對每個 any type 的可省略變數名稱
2455
				foreach($anyTypeVarName as $varName){
226 liveuser 2456
 
3 liveuser 2457
					#如果該可省略變數存在
2458
					if(isset($conf["varInput"][$varName])){
226 liveuser 2459
 
3 liveuser 2460
						#取得變數的形態
2461
						$varType=gettype($conf["varInput"][$varName]);
226 liveuser 2462
 
3 liveuser 2463
						#判斷變數的形態
2464
						switch($varType){
226 liveuser 2465
 
3 liveuser 2466
							#如果是字串
2467
							case "string":
226 liveuser 2468
 
3 liveuser 2469
								#如果 $conf["disallowAllSkipableVarIsEmpty"] 設置為 "true"
2470
								if($conf["disallowAllSkipableVarIsEmpty"]==="true"){
2471
 
2472
									#如果該變數是不被允許的空字串
2473
									if($conf["varInput"][$varName]===""){
226 liveuser 2474
 
3 liveuser 2475
										#設置執行正常
2476
										$result["status"]="true";
2477
 
2478
										#設置檢查不通過
2479
										$result["passed"]="false";
2480
 
2481
										#設置錯誤訊息
2482
										$result["warning"][]="可省略參數".$varName."不都得為空陣列";
2483
 
2484
										#回傳結果
2485
										return $result;
226 liveuser 2486
 
3 liveuser 2487
										}#if end
2488
 
2489
									}#if end
226 liveuser 2490
 
3 liveuser 2491
								#跳出switch
2492
								break;
226 liveuser 2493
 
3 liveuser 2494
							#如果是陣列
2495
							case "array":
226 liveuser 2496
 
3 liveuser 2497
								#如果 $conf["disallowAllSkipableVarIsEmptyArray"] 為 "true"
2498
								if($conf["disallowAllSkipableVarIsEmptyArray"]==="true"){
226 liveuser 2499
 
3 liveuser 2500
									#如果該變數是不被允許的空陣列
2501
									if($conf["varInput"][$varName]===array()){
226 liveuser 2502
 
3 liveuser 2503
										#設置執行正常
2504
										$result["status"]="true";
2505
 
2506
										#設置檢查不通過
2507
										$result["passed"]="false";
2508
 
2509
										#設置錯誤訊息
2510
										$result["warning"][]="可省略參數".$varName."不都得為空陣列";
2511
 
2512
										#回傳結果
2513
										return $result;
226 liveuser 2514
 
3 liveuser 2515
										}#if end
226 liveuser 2516
 
3 liveuser 2517
									}#if end
226 liveuser 2518
 
3 liveuser 2519
								#跳出switch
2520
								break;
226 liveuser 2521
 
3 liveuser 2522
							default:
226 liveuser 2523
 
3 liveuser 2524
							}#switch end
226 liveuser 2525
 
3 liveuser 2526
						}#if end
226 liveuser 2527
 
3 liveuser 2528
					}#foreach end
226 liveuser 2529
 
3 liveuser 2530
				}#if end
2531
 
2532
			}#if end
2533
 
2534
		#如果 $conf["skipableVarDefaultValue"] 有設置
2535
		if(isset($conf["skipableVarDefaultValue"])){
2536
 
2537
			#檢查 $conf["skipableVariableName"] 陣列中的每個可省略變數名稱
2538
			for($i=0;$i<count($conf["skipableVariableName"]);$i++){
2539
 
2540
				#如果 $conf["skipableVarDefaultValue"] 有設置
2541
				if(isset($conf["skipableVarDefaultValue"])){
2542
 
2543
					#如果 $conf["skipableVarDefaultValue"][$i] 為字串且不為空字串
2544
					if(gettype($conf["skipableVarDefaultValue"][$i])==="string" && $conf["skipableVarDefaultValue"][$i]!=""){
2545
 
2546
						#尋找有無$開頭的字串
2547
						#函式說明:
2548
						#取得字首一樣的字串,並回傳其字串。
2549
						#回傳結果:
2550
						#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
2551
						#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
2552
						#$result["function"],當前執行的函數名稱.
2553
						#$result["error"],錯誤訊息陣列.
2554
						#$result["returnString"],爲符合字首條件的字串內容。
2555
						#必填參數:
2556
						$conf["search.getMeetConditionsString"]["checkString"]=$conf["skipableVarDefaultValue"][$i];#要檢查的字串
2557
						$conf["search.getMeetConditionsString"]["frontWord"]="\$";#用來檢查字首應該要有什麼字串
2558
						#用到的涵式:
2559
						#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
2560
						$isVariable=search::getMeetConditionsString($conf["search.getMeetConditionsString"]);
2561
						unset($conf["search.getMeetConditionsString"]);
2562
 
2563
						#如果尋找失敗
2564
						if($isVariable["status"]=="false"){
2565
 
2566
							#設置錯誤識別
2567
							$result["status"]="false";
2568
 
2569
							#設置錯誤訊息
2570
							$result["error"]=$isVariable;
2571
 
2572
							#函式說明:
2573
							#取得簡單的錯誤訊息
2574
							#回傳結果:
2575
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2576
							#$result["content"],結果.
2577
							#$result["function"],當前執行的函數
2578
							#$result["error"],涵式錯誤訊息陣列
2579
							#必填參數:
2580
							$conf["variableCheck::getSimpleError"]=array();
2581
							#$conf["error"],陣列,要處理的變數.
2582
							$conf["variableCheck::getSimpleError"]["error"]=$result;
2583
							#可省略參數:
2584
							#無
2585
							#參考資料:
2586
							#無.
2587
							#備註:
2588
							#無.
2589
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2590
							unset($conf["variableCheck::getSimpleError"]);
2591
 
2592
							#如果執行失敗
2593
							if($getSimpleError["status"]==="false"){
226 liveuser 2594
 
3 liveuser 2595
								#設置執行錯誤訊息
2596
								$result["error"][]=$getSimpleError;
226 liveuser 2597
 
3 liveuser 2598
								#回傳結果
2599
								return $result;
2600
 
2601
								}#if end
2602
 
2603
							#設置 $simpleError
2604
							$result["simpleError"]=$getSimpleError["content"];
2605
 
2606
							#回傳結果
2607
							return $result;
2608
 
2609
							}#if end
2610
 
2611
						#如果含有 "\$" 開頭
2612
						if($isVariable["founded"]=="true"){
2613
 
2614
							#用 " 分割含有 $ 的字串,取得中間那一段
2615
							#函式說明:
2616
							#將固定格式的字串分開,並回傳分開的結果。
2617
							#回傳的參數:
2618
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2619
							#$result["error"],錯誤訊息陣列
2620
							#$result["oriStr"],要分割的原始字串內容
2621
							#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
2622
							#$result["dataCounts"],爲總共分成幾段
2623
							#必填參數:
2624
							$conf["stringProcess.spiltString"]["stringIn"]=$isVariable["returnString"];#要處理的字串。
2625
							$conf["stringProcess.spiltString"]["spiltSymbol"]="\"";#爲以哪個符號作爲分割
2626
							#備註:
2627
							#建議新增如果透過" "分割後的內容含有""的元素,將其移除,並將後面有內容的元素補上,key也重新排序。
2628
							$spiltedStr=stringProcess::spiltString($conf["stringProcess.spiltString"]);
2629
							unset($conf["stringProcess.spiltString"]);
2630
 
2631
							#如果分割失敗
2632
							if($spiltedStr["status"]=="false"){
2633
 
2634
								#設置錯誤識別
2635
								$result["status"]="false";
2636
 
2637
								#設置錯誤訊息
2638
								$result["error"]=$spiltedStr;
2639
 
2640
								#函式說明:
2641
								#取得簡單的錯誤訊息
2642
								#回傳結果:
2643
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2644
								#$result["content"],結果.
2645
								#$result["function"],當前執行的函數
2646
								#$result["error"],涵式錯誤訊息陣列
2647
								#必填參數:
2648
								$conf["variableCheck::getSimpleError"]=array();
2649
								#$conf["error"],陣列,要處理的變數.
2650
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2651
								#可省略參數:
2652
								#無
2653
								#參考資料:
2654
								#無.
2655
								#備註:
2656
								#無.
2657
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2658
								unset($conf["variableCheck::getSimpleError"]);
2659
 
2660
								#如果執行失敗
2661
								if($getSimpleError["status"]==="false"){
226 liveuser 2662
 
3 liveuser 2663
									#設置執行錯誤訊息
2664
									$result["error"][]=$getSimpleError;
226 liveuser 2665
 
3 liveuser 2666
									#回傳結果
2667
									return $result;
2668
 
2669
									}#if end
2670
 
2671
								#設置 $simpleError
2672
								$result["simpleError"]=$getSimpleError["content"];
2673
 
2674
								#回傳結果
2675
								return $result;
2676
 
2677
								}#if end
2678
 
2679
							#如果分割出來沒有大於等於三段
2680
							if($spiltedStr["dataCounts"]<3){
2681
 
2682
								#設置錯誤識別
2683
								$result["status"]="false";
2684
 
2685
								#設置錯誤訊息
2686
								$result["error"]=$spiltedStr;
2687
 
2688
								#函式說明:
2689
								#取得簡單的錯誤訊息
2690
								#回傳結果:
2691
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2692
								#$result["content"],結果.
2693
								#$result["function"],當前執行的函數
2694
								#$result["error"],涵式錯誤訊息陣列
2695
								#必填參數:
2696
								$conf["variableCheck::getSimpleError"]=array();
2697
								#$conf["error"],陣列,要處理的變數.
2698
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2699
								#可省略參數:
2700
								#無
2701
								#參考資料:
2702
								#無.
2703
								#備註:
2704
								#無.
2705
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2706
								unset($conf["variableCheck::getSimpleError"]);
2707
 
2708
								#如果執行失敗
2709
								if($getSimpleError["status"]==="false"){
226 liveuser 2710
 
3 liveuser 2711
									#設置執行錯誤訊息
2712
									$result["error"][]=$getSimpleError;
226 liveuser 2713
 
3 liveuser 2714
									#回傳結果
2715
									return $result;
2716
 
2717
									}#if end
2718
 
2719
								#設置 $simpleError
2720
								$result["simpleError"]=$getSimpleError["content"];
2721
 
2722
								#回傳結果
2723
								return $result;
2724
 
2725
								}#if end
2726
 
2727
							#函式說明:
2728
							#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2729
							#回傳結果:
2730
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2731
							#$result["error"],錯誤訊息陣列.
2732
							#$result["function"],當前執行的函式名稱.
2733
							#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2734
							#必填參數:
2735
							#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2736
							$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
2737
							#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2738
							$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
2739
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2740
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
2741
 
2742
							#如果要採用的預設值變數存在
2743
							if(isset($conf["varInput"][$spiltedStr["dataArray"][1]])){
2744
 
2745
								#代表該元素的預設值為在檢查參數時自動產生的,因此要透過動態變數取得預設值
2746
								$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["varInput"][$spiltedStr["dataArray"][1]]);
2747
 
2748
								#如果變數後面需要串接內容
2749
								if(isset($spiltedStr["dataArray"][3])){
2750
 
2751
									#串接後面的內容
2752
									$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][0]=$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"][0].$spiltedStr["dataArray"][3];
2753
 
2754
									}#if end
2755
 
2756
								}#if end
2757
 
2758
							#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2759
							$argu=&$conf["varInput"];
2760
							#可省略參數:
2761
							$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2762
							unset($conf["variableCheck.checkSkipableVarType"]);
2763
 
2764
							#如果檢查失敗
2765
							if($checkResult["status"]=="false"){
2766
 
2767
								#設置錯誤識別
2768
								$result["status"]="false";
2769
 
2770
								#設置錯誤訊息
2771
								$result["error"]=$checkResult;
2772
 
2773
								#函式說明:
2774
								#取得簡單的錯誤訊息
2775
								#回傳結果:
2776
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2777
								#$result["content"],結果.
2778
								#$result["function"],當前執行的函數
2779
								#$result["error"],涵式錯誤訊息陣列
2780
								#必填參數:
2781
								$conf["variableCheck::getSimpleError"]=array();
2782
								#$conf["error"],陣列,要處理的變數.
2783
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2784
								#可省略參數:
2785
								#無
2786
								#參考資料:
2787
								#無.
2788
								#備註:
2789
								#無.
2790
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2791
								unset($conf["variableCheck::getSimpleError"]);
2792
 
2793
								#如果執行失敗
2794
								if($getSimpleError["status"]==="false"){
226 liveuser 2795
 
3 liveuser 2796
									#設置執行錯誤訊息
2797
									$result["error"][]=$getSimpleError;
226 liveuser 2798
 
3 liveuser 2799
									#回傳結果
2800
									return $result;
2801
 
2802
									}#if end
2803
 
2804
								#設置 $simpleError
2805
								$result["simpleError"]=$getSimpleError["content"];
2806
 
2807
								#回傳結果
2808
								return $result;
226 liveuser 2809
 
3 liveuser 2810
								}#if end
2811
 
2812
							#如果檢查不通過
2813
							if($checkResult["passed"]=="false"){
2814
 
2815
								#設置錯誤識別
2816
								$result["status"]="true";
2817
 
2818
								#設置錯誤識別
2819
								$result["passed"]="false";
2820
 
2821
								#設置錯誤訊息
2822
								$result["error"]=$checkResult;
2823
 
2824
								#函式說明:
2825
								#取得簡單的錯誤訊息
2826
								#回傳結果:
2827
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2828
								#$result["content"],結果.
2829
								#$result["function"],當前執行的函數
2830
								#$result["error"],涵式錯誤訊息陣列
2831
								#必填參數:
2832
								$conf["variableCheck::getSimpleError"]=array();
2833
								#$conf["error"],陣列,要處理的變數.
2834
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2835
								#可省略參數:
2836
								#無
2837
								#參考資料:
2838
								#無.
2839
								#備註:
2840
								#無.
2841
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2842
								unset($conf["variableCheck::getSimpleError"]);
2843
 
2844
								#如果執行失敗
2845
								if($getSimpleError["status"]==="false"){
226 liveuser 2846
 
3 liveuser 2847
									#設置執行錯誤訊息
2848
									$result["error"][]=$getSimpleError;
226 liveuser 2849
 
3 liveuser 2850
									#回傳結果
2851
									return $result;
2852
 
2853
									}#if end
2854
 
2855
								#設置 $simpleError
2856
								$result["simpleError"]=$getSimpleError["content"];
2857
 
2858
								#回傳結果
2859
								return $result;
2860
 
2861
								}#if end
2862
 
2863
							}#if end
2864
 
2865
						#反之 預設值沒有含有 "$"
2866
						else{
2867
 
2868
							#函式說明:
2869
							#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2870
							#回傳結果:
2871
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2872
							#$result["error"],錯誤訊息陣列.
2873
							#$result["function"],當前執行的函式名稱.
2874
							#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
2875
							#必填參數:
2876
							#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
2877
							$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
2878
							#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
2879
							$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
2880
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
2881
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
2882
							#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
2883
							$argu=&$conf["varInput"];
2884
							#可省略參數:
2885
							$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
2886
							$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
2887
							unset($conf["variableCheck.checkSkipableVarType"]);
2888
 
2889
							#如果檢查失敗
2890
							if($checkResult["status"]=="false"){
2891
 
2892
								#設置錯誤識別
2893
								$result["status"]="false";
2894
 
2895
								#設置錯誤訊息
2896
								$result["error"]=$checkResult;
2897
 
2898
								#函式說明:
2899
								#取得簡單的錯誤訊息
2900
								#回傳結果:
2901
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2902
								#$result["content"],結果.
2903
								#$result["function"],當前執行的函數
2904
								#$result["error"],涵式錯誤訊息陣列
2905
								#必填參數:
2906
								$conf["variableCheck::getSimpleError"]=array();
2907
								#$conf["error"],陣列,要處理的變數.
2908
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2909
								#可省略參數:
2910
								#無
2911
								#參考資料:
2912
								#無.
2913
								#備註:
2914
								#無.
2915
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2916
								unset($conf["variableCheck::getSimpleError"]);
2917
 
2918
								#如果執行失敗
2919
								if($getSimpleError["status"]==="false"){
226 liveuser 2920
 
3 liveuser 2921
									#設置執行錯誤訊息
2922
									$result["error"][]=$getSimpleError;
226 liveuser 2923
 
3 liveuser 2924
									#回傳結果
2925
									return $result;
2926
 
2927
									}#if end
2928
 
2929
								#設置 $simpleError
2930
								$result["simpleError"]=$getSimpleError["content"];
2931
 
2932
								#回傳結果
2933
								return $result;
2934
 
2935
								}#if end
2936
 
2937
							#如果檢查不通過
2938
							if($checkResult["passed"]=="false"){
226 liveuser 2939
 
3 liveuser 2940
								#設置執正常
2941
								$result["status"]="true";
226 liveuser 2942
 
3 liveuser 2943
								#設置錯誤識別
2944
								$result["passed"]="false";
2945
 
2946
								#設置錯誤訊息
2947
								$result["error"]=$checkResult;
2948
 
2949
								#函式說明:
2950
								#取得簡單的錯誤訊息
2951
								#回傳結果:
2952
								#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2953
								#$result["content"],結果.
2954
								#$result["function"],當前執行的函數
2955
								#$result["error"],涵式錯誤訊息陣列
2956
								#必填參數:
2957
								$conf["variableCheck::getSimpleError"]=array();
2958
								#$conf["error"],陣列,要處理的變數.
2959
								$conf["variableCheck::getSimpleError"]["error"]=$result;
2960
								#可省略參數:
2961
								#無
2962
								#參考資料:
2963
								#無.
2964
								#備註:
2965
								#無.
2966
								$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
2967
								unset($conf["variableCheck::getSimpleError"]);
2968
 
2969
								#如果執行失敗
2970
								if($getSimpleError["status"]==="false"){
226 liveuser 2971
 
3 liveuser 2972
									#設置執行錯誤訊息
2973
									$result["error"][]=$getSimpleError;
226 liveuser 2974
 
3 liveuser 2975
									#回傳結果
2976
									return $result;
2977
 
2978
									}#if end
2979
 
2980
								#設置 $simpleError
2981
								$result["simpleError"]=$getSimpleError["content"];
2982
 
2983
								#回傳結果
2984
								return $result;
2985
 
2986
								}#if end
2987
 
2988
							}#else end
2989
 
2990
						}#if end
2991
 
2992
					#反之預設值非字串
2993
					else{
2994
 
2995
						#函式說明:
2996
						#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
2997
						#回傳結果:
2998
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2999
						#$result["error"],錯誤訊息陣列.
3000
						#$result["function"],當前執行的函式名稱.
3001
						#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3002
						#必填參數:
3003
						#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
3004
						$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
3005
						#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3006
						$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
3007
						#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3008
						$argu=&$conf["varInput"];
3009
						#可省略參數:
3010
 
3011
						#如果有設定 $conf["skipableVariableType"]
3012
						if(isset($conf["skipableVariableType"])){
3013
 
3014
							#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3015
							$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
3016
 
3017
							}#if end
3018
 
3019
						#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"],字串陣列,每個不存的變數要初始化為什麼,null代表不指定.
3020
						$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
3021
						#var_dump($conf);
3022
						$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3023
						unset($conf["variableCheck.checkSkipableVarType"]);
3024
 
3025
						#如果檢查失敗
3026
						if($checkResult["status"]=="false"){
3027
 
3028
							#設置執行失敗
3029
							$result["status"]="false";
3030
 
3031
							#設置錯誤訊息
3032
							$result["error"]=$checkResult;
3033
 
3034
							#函式說明:
3035
							#取得簡單的錯誤訊息
3036
							#回傳結果:
3037
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3038
							#$result["content"],結果.
3039
							#$result["function"],當前執行的函數
3040
							#$result["error"],涵式錯誤訊息陣列
3041
							#必填參數:
3042
							$conf["variableCheck::getSimpleError"]=array();
3043
							#$conf["error"],陣列,要處理的變數.
3044
							$conf["variableCheck::getSimpleError"]["error"]=$result;
3045
							#可省略參數:
3046
							#無
3047
							#參考資料:
3048
							#無.
3049
							#備註:
3050
							#無.
3051
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3052
							unset($conf["variableCheck::getSimpleError"]);
3053
 
3054
							#如果執行失敗
3055
							if($getSimpleError["status"]==="false"){
226 liveuser 3056
 
3 liveuser 3057
								#設置執行錯誤訊息
3058
								$result["error"][]=$getSimpleError;
226 liveuser 3059
 
3 liveuser 3060
								#回傳結果
3061
								return $result;
3062
 
3063
								}#if end
3064
 
3065
							#設置 $simpleError
3066
							$result["simpleError"]=$getSimpleError["content"];
3067
 
3068
							#回傳結果
3069
							return $result;
3070
 
3071
							}#if end
3072
 
3073
						#如果檢查不通過
3074
						if($checkResult["passed"]=="false"){
3075
 
3076
							#設置執正常
3077
							$result["status"]="true";
226 liveuser 3078
 
3 liveuser 3079
							#設置錯誤識別
3080
							$result["passed"]="false";
3081
 
3082
							#設置錯誤訊息
3083
							$result["error"]=$checkResult;
3084
 
3085
							#函式說明:
3086
							#取得簡單的錯誤訊息
3087
							#回傳結果:
3088
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3089
							#$result["content"],結果.
3090
							#$result["function"],當前執行的函數
3091
							#$result["error"],涵式錯誤訊息陣列
3092
							#必填參數:
3093
							$conf["variableCheck::getSimpleError"]=array();
3094
							#$conf["error"],陣列,要處理的變數.
3095
							$conf["variableCheck::getSimpleError"]["error"]=$result;
3096
							#可省略參數:
3097
							#無
3098
							#參考資料:
3099
							#無.
3100
							#備註:
3101
							#無.
3102
							$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3103
							unset($conf["variableCheck::getSimpleError"]);
3104
 
3105
							#如果執行失敗
3106
							if($getSimpleError["status"]==="false"){
226 liveuser 3107
 
3 liveuser 3108
								#設置執行錯誤訊息
3109
								$result["error"][]=$getSimpleError;
226 liveuser 3110
 
3 liveuser 3111
								#回傳結果
3112
								return $result;
3113
 
3114
								}#if end
3115
 
3116
							#設置 $simpleError
3117
							$result["simpleError"]=$getSimpleError["content"];
3118
 
3119
							#回傳結果
3120
							return $result;
3121
 
3122
							}#if end
3123
 
3124
						}#else end
3125
 
3126
					}#if end
3127
 
3128
				#反之沒有設定預設值
3129
				else{
3130
 
3131
					#函式說明:
3132
					#檢查一包含數個可省略變數的陣列變數,其型態是否正確,省略掉的陣列變數可以直接給定預設值。
3133
					#回傳結果:
3134
					#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3135
					#$result["error"],錯誤訊息陣列.
3136
					#$result["function"],當前執行的函式名稱.
3137
					#$result["passed"],參數是否都通過檢查,"true",代表有通過檢查,"false"代表沒有通過檢查。
3138
					#必填參數:
3139
					#$conf["variableCheck.checkSkipableVarType"]["checkedVar"],陣列,要檢查的變數陣列名稱為?
3140
					$conf["variableCheck.checkSkipableVarType"]["checkedVar"]=$conf["varInput"];
3141
					#$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"],字串陣列,要檢查型態是否設定正確的變數名稱陣列.
3142
					$conf["variableCheck.checkSkipableVarType"]["sikpableVarNameArray"]=array($conf["skipableVariableName"][$i]);
3143
					#$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"],字串陣列,要檢查的每個變數,其型態應該要為何?
3144
					$conf["variableCheck.checkSkipableVarType"]["skipableVarTypeArray"]=array($conf["skipableVariableType"][$i]);
3145
					#$argu,要直接存取的陣列變數名稱,變數前面加上「&」,如果要在別的函式裡面使用本函式,請記得將變動過結果($argu)給使用該函式的設定變數(通常是$conf=$argu).
3146
					$argu=&$conf["varInput"];
3147
					#可省略參數:
3148
					#$conf["variableCheck.checkSkipableVarType"]["skipableVarDefaultValue"]=array($conf["skipableVarDefaultValue"][$i]);
3149
					$checkResult=variableCheck::checkSkipableVarType($conf["variableCheck.checkSkipableVarType"],$argu);
3150
					unset($conf["variableCheck.checkSkipableVarType"]);
3151
 
3152
					#如果檢查失敗
3153
					if($checkResult["status"]=="false"){
3154
 
3155
						#設置錯誤識別
3156
						$result["status"]="false";
3157
 
3158
						#設置錯誤訊息
3159
						$result["error"]=$checkResult;
3160
 
3161
						#函式說明:
3162
						#取得簡單的錯誤訊息
3163
						#回傳結果:
3164
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3165
						#$result["content"],結果.
3166
						#$result["function"],當前執行的函數
3167
						#$result["error"],涵式錯誤訊息陣列
3168
						#必填參數:
3169
						$conf["variableCheck::getSimpleError"]=array();
3170
						#$conf["error"],陣列,要處理的變數.
3171
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3172
						#可省略參數:
3173
						#無
3174
						#參考資料:
3175
						#無.
3176
						#備註:
3177
						#無.
3178
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3179
						unset($conf["variableCheck::getSimpleError"]);
3180
 
3181
						#如果執行失敗
3182
						if($getSimpleError["status"]==="false"){
226 liveuser 3183
 
3 liveuser 3184
							#設置執行錯誤訊息
3185
							$result["error"][]=$getSimpleError;
226 liveuser 3186
 
3 liveuser 3187
							#回傳結果
3188
							return $result;
3189
 
3190
							}#if end
3191
 
3192
						#設置 $simpleError
3193
						$result["simpleError"]=$getSimpleError["content"];
3194
 
3195
						#回傳結果
3196
						return $result;
3197
 
3198
						}#if end
3199
 
3200
					#如果檢查不通過
3201
					if($checkResult["passed"]=="false"){
3202
 
3203
						#設置執正常
3204
						$result["status"]="true";
226 liveuser 3205
 
3 liveuser 3206
						#設置錯誤識別
3207
						$result["passed"]="false";
3208
 
3209
						#設置錯誤訊息
3210
						$result["error"]=$checkResult;
3211
 
3212
						#函式說明:
3213
						#取得簡單的錯誤訊息
3214
						#回傳結果:
3215
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3216
						#$result["content"],結果.
3217
						#$result["function"],當前執行的函數
3218
						#$result["error"],涵式錯誤訊息陣列
3219
						#必填參數:
3220
						$conf["variableCheck::getSimpleError"]=array();
3221
						#$conf["error"],陣列,要處理的變數.
3222
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3223
						#可省略參數:
3224
						#無
3225
						#參考資料:
3226
						#無.
3227
						#備註:
3228
						#無.
3229
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3230
						unset($conf["variableCheck::getSimpleError"]);
3231
 
3232
						#如果執行失敗
3233
						if($getSimpleError["status"]==="false"){
226 liveuser 3234
 
3 liveuser 3235
							#設置執行錯誤訊息
3236
							$result["error"][]=$getSimpleError;
226 liveuser 3237
 
3 liveuser 3238
							#回傳結果
3239
							return $result;
3240
 
3241
							}#if end
3242
 
3243
						#設置 $simpleError
3244
						$result["simpleError"]=$getSimpleError["content"];
3245
 
3246
						#回傳結果
3247
						return $result;
3248
 
3249
						}#if end
3250
 
3251
					}#else end
3252
 
3253
				}#for end
3254
 
3255
			}#if end
3256
 
3257
		#如果 $conf["arrayCountEqualCheck"] 存在
3258
		if(isset($conf["arrayCountEqualCheck"])){
3259
 
3260
			#$conf["arrayCountEqualCheck"]有幾組元素就執行幾次
3261
			for($i=0;$i<count($conf["arrayCountEqualCheck"]);$i++){
3262
 
3263
				#初始化暫存元素數量的陣列
3264
				$tempEqualCount=array();
3265
 
3266
				#該組有幾個元素就執行幾次
3267
				for($j=0;$j<count($conf["arrayCountEqualCheck"][$i]);$j++){
3268
 
3269
					#如果要判斷元素數量是否一致的變數陣列存在
3270
					if(isset($conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]])){
3271
 
3272
						#儲存該組該變數的元素數量
3273
						$tempEqualCount[]=count($conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]]);
3274
 
3275
						}#if end
3276
 
3277
					}#for end
3278
 
3279
				#如果該組只有一個元素數量資料
3280
				if(count($tempEqualCount)==0){
3281
 
3282
					#跳出迴圈
3283
					break;
3284
 
3285
					}#if end
3286
 
3287
				#看 $tempEqualCount 中的元素計數是否都一樣
3288
				#$tempEqualCount 有幾個元素就執行幾次
3289
				for($j=1;$j<count($tempEqualCount);$j++){
3290
 
3291
					#如果跟第一個變數的元素數量不一樣
3292
					if($tempEqualCount[0]!=$tempEqualCount[$j]){
3293
 
3294
						#設置執正常
3295
						$result["status"]="true";
226 liveuser 3296
 
3 liveuser 3297
						#設置錯誤識別
3298
						$result["passed"]="false";
3299
 
3300
						#設置錯誤訊息
3301
						$result["error"][]="key為".$conf["arrayCountEqualCheck"][$i][0]."與".$conf["arrayCountEqualCheck"][$i][$j]."的參數其元數數量不一致";
3302
 
3303
						#設置錯誤訊息
3304
						$result["error"][]=array("key為".$conf["arrayCountEqualCheck"][$i][0]."的參數",$conf["varInput"][$conf["arrayCountEqualCheck"][$i][0]]);
3305
 
3306
						#設置錯誤訊息
3307
						$result["error"][]=array("key為".$conf["arrayCountEqualCheck"][$i][$j]."的參數",$conf["varInput"][$conf["arrayCountEqualCheck"][$i][$j]]);
3308
 
3309
						#函式說明:
3310
						#取得簡單的錯誤訊息
3311
						#回傳結果:
3312
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3313
						#$result["content"],結果.
3314
						#$result["function"],當前執行的函數
3315
						#$result["error"],涵式錯誤訊息陣列
3316
						#必填參數:
3317
						$conf["variableCheck::getSimpleError"]=array();
3318
						#$conf["error"],陣列,要處理的變數.
3319
						$conf["variableCheck::getSimpleError"]["error"]=$result;
3320
						#可省略參數:
3321
						#無
3322
						#參考資料:
3323
						#無.
3324
						#備註:
3325
						#無.
3326
						$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3327
						unset($conf["variableCheck::getSimpleError"]);
3328
 
3329
						#如果執行失敗
3330
						if($getSimpleError["status"]==="false"){
226 liveuser 3331
 
3 liveuser 3332
							#設置執行錯誤訊息
3333
							$result["error"][]=$getSimpleError;
226 liveuser 3334
 
3 liveuser 3335
							#回傳結果
3336
							return $result;
3337
 
3338
							}#if end
3339
 
3340
						#設置 $simpleError
3341
						$result["simpleError"]=$getSimpleError["content"];
3342
 
3343
						#回傳結果
3344
						return $result;
3345
 
3346
						}#if end
3347
 
3348
					}#for end
3349
 
3350
				}#for end
3351
 
3352
			}#if end
3353
 
3354
		#初始化儲存所有參數名稱的陣列
3355
		$arguArray=array();
3356
 
3357
		#如果有要必填的參數名稱
3358
		if(isset($conf["mustBeFilledVariableName"])){
3359
 
3360
			#記錄必填的參數
3361
			$arguArray=$conf["mustBeFilledVariableName"];
3362
 
3363
			}#if end
3364
 
3365
		#若有可省略的參數
3366
		if(isset($conf["skipableVariableName"])){
3367
 
3368
			#有幾個可省略參數就執行幾次
3369
			for($i=0;$i<count($conf["skipableVariableName"]);$i++){
3370
 
3371
				#記錄參數
3372
				$arguArray[]=$conf["skipableVariableName"][$i];
3373
 
3374
				}#for end
3375
 
3376
			}#if end
226 liveuser 3377
 
3378
		#如果有可省略變數的any形態變數設定
3 liveuser 3379
		if(isset($anyTypeVarName)){
226 liveuser 3380
 
3 liveuser 3381
			#針對每個可省略的any形態變數
3382
			foreach($anyTypeVarName as $varName){
226 liveuser 3383
 
3 liveuser 3384
				#記錄參數
3385
				$arguArray[]=$varName;
226 liveuser 3386
 
3 liveuser 3387
				}#foreach end
226 liveuser 3388
 
3 liveuser 3389
			}#if end
3390
 
3391
		#初始化儲存已經輸入的參數名稱陣列
3392
		$inputVarArray=array();
3393
 
3394
		#移除不要的參考陣列
3395
		unset($conf["varInput"][$conf["referenceVarKey"]]);
3396
 
3397
		#有幾個輸入的參數就執行幾次
3398
		foreach($conf["varInput"] as $key=>$value ){
3399
 
3400
			#儲存參數的名稱
3401
			$inputVarArray[]=$key;
3402
 
3403
			}#foreach end
3404
 
3405
		#有幾個輸入的參數就執行幾次
3406
		for($i=0;$i<count($inputVarArray);$i++){
3407
 
3408
			#初始化是否有找到對應的必填或可省參數
3409
			$matched="false";
3410
 
3411
			#檢查該輸入的參數是否應該存在
3412
			for($j=0;$j<count($arguArray);$j++){
3413
 
3414
				#如果該輸入的參數屬於應該要有的參數
3415
				if($inputVarArray[$i]==$arguArray[$j]){
3416
 
3417
					#設置有找到對應的必填或可省參數
3418
					$matched="true";
3419
 
3420
					}#if end
3421
 
3422
				}#for end
3423
 
3424
			#如果對照了所有必填與可省略參數都沒有找到一樣的參數名稱
3425
			if($matched=="false"){
3426
 
3427
				#記錄目前輸入的參數名稱陣列
3428
				$result["argu"]=$inputVarArray;
3429
 
3430
				#記錄合法可用的參數名稱陣列.
3431
				$result["legalVarName"]=$arguArray;
3432
 
3433
				#記錄不應該存在的參數名稱
3434
				$result["notNeedVar"][]=$inputVarArray[$i];
3435
 
3436
				}#if end
3437
 
3438
			}#for end
3439
 
3440
		#如果有不應該存在的參數名稱
3441
		if(isset($result["notNeedVar"])){
3442
 
3443
			#設置錯誤識別
3444
			$result["status"]="true";
3445
 
3446
			#設置檢查不通過
3447
			$result["passed"]="false";
3448
 
3449
			#設置錯誤訊息
3450
			$result["error"]="發現「".count($result["notNeedVar"])."」個多餘的參數";
3451
 
3452
			#函式說明:
3453
			#取得簡單的錯誤訊息
3454
			#回傳結果:
3455
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3456
			#$result["content"],結果.
3457
			#$result["function"],當前執行的函數
3458
			#$result["error"],涵式錯誤訊息陣列
3459
			#必填參數:
3460
			$conf["variableCheck::getSimpleError"]=array();
3461
			#$conf["error"],陣列,要處理的變數.
3462
			$conf["variableCheck::getSimpleError"]["error"]=$result;
3463
			#可省略參數:
3464
			#無
3465
			#參考資料:
3466
			#無.
3467
			#備註:
3468
			#無.
3469
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3470
			unset($conf["variableCheck::getSimpleError"]);
3471
 
3472
			#如果執行失敗
3473
			if($getSimpleError["status"]==="false"){
226 liveuser 3474
 
3 liveuser 3475
				#設置執行錯誤訊息
3476
				$result["error"][]=$getSimpleError;
226 liveuser 3477
 
3 liveuser 3478
				#回傳結果
3479
				return $result;
3480
 
3481
				}#if end
3482
 
3483
			#設置 $simpleError
3484
			$result["simpleError"]=$getSimpleError["content"];
3485
 
3486
			#回傳結果
3487
			return $result;
3488
 
3489
			}#if end
3490
 
3491
		#初始化儲存沒有符合規定的參數訊息
3492
		$result["shouldNotBeEmpty"]=array();
3493
 
3494
		#如果有設定 $conf["skipableVariableCanNotBeEmpty"]
3495
		if(isset($conf["skipableVariableCanNotBeEmpty"])){
3496
 
3497
			#針對每個不能為空值跟空集合的變數名稱
3498
			foreach($conf["skipableVariableCanNotBeEmpty"] as $varName){
3499
 
3500
				#如果可省略變數 $varName 存在
3501
				if(isset($conf["varInput"][$varName])){
3502
 
3503
					#如果其為 空字串 或 空陣列
3504
					if($conf["varInput"][$varName]==""){
3505
 
3506
						#記錄沒有符合規定的參數訊息
3507
						$result["shouldNotBeEmpty"][]="參數「".$varName."」不得為空字串";
3508
 
3509
						}#if end
3510
 
3511
					#反之如果為陣列
3512
					else if(gettype($conf["varInput"][$varName])==="array"){
3513
 
3514
						#如果為空陣列
3515
						if(count($conf["varInput"][$varName])===0){
3516
 
3517
							#記錄沒有符合規定的參數訊息
3518
							$result["shouldNotBeEmpty"][]="參數「".$varName."」不得為空集合";
3519
 
3520
							}#if end
3521
 
3522
						}#else end
3523
 
3524
					}#if end
3525
 
3526
				}#foreach end
3527
 
3528
			#如果 $result["shouldNotBeEmpty"] 存在元素
3529
			if(count($result["shouldNotBeEmpty"])>0){
3530
 
3531
				#設置錯誤識別
3532
				$result["status"]="true";
3533
 
3534
				#設置檢查不通過
3535
				$result["passed"]="false";
3536
 
3537
				#函式說明:
3538
				#取得簡單的錯誤訊息
3539
				#回傳結果:
3540
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3541
				#$result["content"],結果.
3542
				#$result["function"],當前執行的函數
3543
				#$result["error"],涵式錯誤訊息陣列
3544
				#必填參數:
3545
				$conf["variableCheck::getSimpleError"]=array();
3546
				#$conf["error"],陣列,要處理的變數.
3547
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3548
				#可省略參數:
3549
				#無
3550
				#參考資料:
3551
				#無.
3552
				#備註:
3553
				#無.
3554
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3555
				unset($conf["variableCheck::getSimpleError"]);
3556
 
3557
				#如果執行失敗
3558
				if($getSimpleError["status"]==="false"){
226 liveuser 3559
 
3 liveuser 3560
					#設置執行錯誤訊息
3561
					$result["error"][]=$getSimpleError;
226 liveuser 3562
 
3 liveuser 3563
					#回傳結果
3564
					return $result;
3565
 
3566
					}#if end
3567
 
3568
				#設置 $simpleError
3569
				$result["simpleError"]=$getSimpleError["content"];
3570
 
3571
				#回傳結果
3572
				return $result;
3573
 
3574
				}#if end
3575
 
3576
			}#if end
3577
 
3578
		#如果有設定可省略參數且不允許所有可省略變數都不存在
3579
		if( isset($conf["skipableVariableName"]) && ($conf["disallowAllSkipableVarNotExist"]==="true") ){
226 liveuser 3580
 
3 liveuser 3581
			#函式說明:
3582
			#檢查多個字串中的每個字串是否有多個關鍵字
3583
			#回傳結果:
3584
			#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
3585
			#$result["function"],當前執行的函數名稱.
3586
			#$result["error"],錯誤訊息.
3587
			#$result["argu"],使用的參數.
3588
			#$result["foundedTrueKey"],結果為"true"的被搜尋元素key陣列,與其數值內容.
3589
			#$result["foundedKeyWords"],找到的關鍵字陣列.
3590
			#$result["foundedFalseKey"],結果為"false"的被搜尋元素key陣列,與其數值內容.
3591
			#$result["foundedTrueKeyWords"],二維陣列,各個字串有找到的關鍵字陣列.
3592
			#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
3593
			#必填參數:
3594
			#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
3595
			$conf["search::findManyKeyWordsFromManyString"]["keyWords"]=$conf["skipableVariableName"];
3596
			#$conf["stringArray"],字串陣列,要被搜尋的字串內容陣列.
3597
			$conf["search::findManyKeyWordsFromManyString"]["stringArray"]=array_keys($conf["varInput"]);
3598
			#可省略參數:
3599
			#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為"false"不需要完全符合.
3600
			#$conf["completeEqual"]="true";
3601
			#參考資料:
3602
			#無.
3603
			#備註:
3604
			#無.
3605
			$findManyKeyWordsFromManyString=search::findManyKeyWordsFromManyString($conf["search::findManyKeyWordsFromManyString"]);
3606
			unset($conf["search::findManyKeyWordsFromManyString"]);
226 liveuser 3607
 
3 liveuser 3608
			#如果執行失敗
3609
			if($findManyKeyWordsFromManyString["status"]==="false"){
226 liveuser 3610
 
3 liveuser 3611
				#設置錯誤識別
3612
				$result["status"]="false";
3613
 
3614
				#設置檢查不通過
3615
				$result["passed"]="false";
226 liveuser 3616
 
3 liveuser 3617
				#設置執行錯誤訊息
3618
				$result["error"]=$findManyKeyWordsFromManyString;
3619
 
3620
				#函式說明:
3621
				#取得簡單的錯誤訊息
3622
				#回傳結果:
3623
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3624
				#$result["content"],結果.
3625
				#$result["function"],當前執行的函數
3626
				#$result["error"],涵式錯誤訊息陣列
3627
				#必填參數:
3628
				$conf["variableCheck::getSimpleError"]=array();
3629
				#$conf["error"],陣列,要處理的變數.
3630
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3631
				#可省略參數:
3632
				#無
3633
				#參考資料:
3634
				#無.
3635
				#備註:
3636
				#無.
3637
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3638
				unset($conf["variableCheck::getSimpleError"]);
3639
 
3640
				#如果執行失敗
3641
				if($getSimpleError["status"]==="false"){
226 liveuser 3642
 
3 liveuser 3643
					#設置執行錯誤訊息
3644
					$result["error"][]=$getSimpleError;
226 liveuser 3645
 
3 liveuser 3646
					#回傳結果
3647
					return $result;
3648
 
3649
					}#if end
3650
 
3651
				#設置 $simpleError
3652
				$result["simpleError"]=$getSimpleError["content"];
3653
 
3654
				#回傳結果
3655
				return $result;
226 liveuser 3656
 
3 liveuser 3657
				}#if end
226 liveuser 3658
 
3 liveuser 3659
			#如果沒有找到至少一個可省略參數存在
3660
			if(count($findManyKeyWordsFromManyString["foundedTrueKey"])===0){
226 liveuser 3661
 
3 liveuser 3662
				#設置執行正常
3663
				$result["status"]="true";
3664
 
3665
				#設置檢查不通過
3666
				$result["passed"]="false";
226 liveuser 3667
 
3 liveuser 3668
				#設置執行錯誤訊息
3669
				$result["error"]=$findManyKeyWordsFromManyString;
3670
 
3671
				#函式說明:
3672
				#取得簡單的錯誤訊息
3673
				#回傳結果:
3674
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3675
				#$result["content"],結果.
3676
				#$result["function"],當前執行的函數
3677
				#$result["error"],涵式錯誤訊息陣列
3678
				#必填參數:
3679
				$conf["variableCheck::getSimpleError"]=array();
3680
				#$conf["error"],陣列,要處理的變數.
3681
				$conf["variableCheck::getSimpleError"]["error"]=$result;
3682
				#可省略參數:
3683
				#無
3684
				#參考資料:
3685
				#無.
3686
				#備註:
3687
				#無.
3688
				$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
3689
				unset($conf["variableCheck::getSimpleError"]);
3690
 
3691
				#如果執行失敗
3692
				if($getSimpleError["status"]==="false"){
226 liveuser 3693
 
3 liveuser 3694
					#設置執行錯誤訊息
3695
					$result["error"][]=$getSimpleError;
226 liveuser 3696
 
3 liveuser 3697
					#回傳結果
3698
					return $result;
3699
 
3700
					}#if end
3701
 
3702
				#設置 $simpleError
3703
				$result["simpleError"]=$getSimpleError["content"];
3704
 
3705
				#回傳結果
3706
				return $result;
226 liveuser 3707
 
3 liveuser 3708
				}#if end
226 liveuser 3709
 
3 liveuser 3710
			}#if end
3711
 
3712
		#設置執行正常
3713
		$result["status"]="true";
3714
 
3715
		#設置錯誤識別
3716
		$result["passed"]="true";
3717
 
3718
		#回傳結果
3719
		return $result;
3720
 
3721
		}#function checkArguments end
3722
 
3723
	/*
3724
	#函式說明:
3725
	#檢查一陣列變數是否為空陣列
3726
	#回傳結果:
3727
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3728
	#$result["content"],結果陣列.
3729
	#$result["function"],當前執行的函數
3730
	#$result["error"],涵式錯誤訊息陣列
3731
	#$result["empty"],"true"代表為空陣列,"false"代表不為空陣列.
3732
	#必填參數:
3733
	#$conf["var"],陣列變數.
3734
	$conf["var"]=;
3735
	#可省略參數:
3736
	#無.
3737
	#參考資料:
3738
	#無.
3739
	#備註:
3740
	#無.
3741
	*/
3742
	public static function emptyArray(&$conf){
3743
 
3744
		#初始化要回傳的結果
3745
		$result=array();
3746
 
3747
		#取得當前執行的函數名稱
3748
		$result["function"]=__FUNCTION__;
3749
 
3750
		#如果沒有參數
3751
		if(func_num_args()==0){
3752
 
3753
			#設置執行失敗
3754
			$result["status"]="false";
3755
 
3756
			#設置執行錯誤訊息
3757
			$result["error"]="函數".$result["function"]."需要參數";
3758
 
3759
			#回傳結果
3760
			return $result;
3761
 
3762
			}#if end
3763
 
3764
		#取得參數
3765
		$result["argu"]=$conf;
3766
 
3767
		#如果 $conf 不為陣列
3768
		if(gettype($conf)!=="array"){
3769
 
3770
			#設置執行失敗
3771
			$result["status"]="false";
3772
 
3773
			#設置執行錯誤訊息
3774
			$result["error"][]="\$conf變數須為陣列形態";
3775
 
3776
			#如果傳入的參數為 null
3777
			if($conf===null){
3778
 
3779
				#設置執行錯誤訊息
3780
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3781
 
3782
				}#if end
3783
 
3784
			#回傳結果
3785
			return $result;
3786
 
3787
			}#if end
3788
 
3789
		#檢查參數
3790
		#函式說明:
3791
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
3792
		#回傳結果:
3793
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3794
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3795
		#$result["function"],當前執行的函式名稱.
3796
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3797
		#$result["warning"],警告訊息
3798
		#$result["content"][$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3799
		#$result["content"][$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3800
		#$result["content"][$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3801
		#必填參數:
3802
		$conf["variableCheck::isexistMulti"]["varInput"]=$conf;#要檢查的陣列變數
3803
		$conf["variableCheck::isexistMulti"]["variableCheck"]=array("var");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
3804
		#可省略參數:
3805
		$conf["variableCheck::isexistMulti"]["variableType"]=array("array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); ,null代表沒有指定變數形態.
3806
		#$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置.
3807
		#$conf["cnaBeEmpty"],陣列,可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"false"時生效.
3808
		#$conf["cnaBeEmpty"]=array();
3809
		#$conf["cnaNotBeEmpty"],陣列,不可以為空字串或集合的變數,僅當$conf["canBeEmptyString"]為"true"時生效.
3810
		#$conf["cnaNotBeEmpty"]=array();
3811
		$isexistMulti=variableCheck::isexistMulti($conf["variableCheck::isexistMulti"]);
3812
		unset($conf["variableCheck::isexistMulti"]);
3813
 
3814
		#如果檢查變數失敗
3815
		if($isexistMulti["status"]==="false"){
3816
 
3817
			#設置執行失敗
3818
			$result["status"]="false";
3819
 
3820
			#設置執行錯誤訊息
3821
			$result["error"]=$isexistMulti;
3822
 
3823
			#回傳結果
3824
			return $result;
3825
 
3826
			}#if end
3827
 
3828
		#如果檢查變數不通過
3829
		if($isexistMulti["passed"]==="false"){
3830
 
3831
			#設置執行失敗
3832
			$result["status"]="false";
3833
 
3834
			#設置執行錯誤訊息
3835
			$result["error"]=$isexistMulti;
3836
 
3837
			#回傳結果
3838
			return $result;
3839
 
3840
			}#if end
3841
 
3842
		#如果裡面有內容
3843
		if(count($conf["var"])!==0){
3844
 
3845
			#針對每個內容
3846
			foreach($conf["var"] as $var){
3847
 
3848
				#如果內容不是陣列
3849
				if(gettype($var)!=="array"){
3850
 
3851
					#設置執行失敗
3852
					$result["status"]="true";
3853
 
3854
					#設置不為空陣列
3855
					$result["empty"]="false";
3856
 
3857
					#回傳結果
3858
					return $result;
3859
 
3860
					}#if end
3861
 
3862
				#反之是陣列
3863
				else{
3864
 
3865
					#呼叫自己
3866
					$conf["variableCheck::emptyArray"]["var"]=$var;
3867
					$emptyArray=variableCheck::emptyArray($conf["variableCheck::emptyArray"]);
3868
					unset($conf["variableCheck::emptyArray"]);
3869
 
3870
					#如果執行失敗
3871
					if($emptyArray["status"]==="false"){
3872
 
3873
						#設置執行失敗
3874
						$result["status"]="false";
3875
 
3876
						#設置執行錯誤訊息
3877
						$result["error"]=$emptyArray;
3878
 
3879
						#回傳結果
3880
						return $result;
3881
 
3882
						}#if end
3883
 
3884
					#如果不是空陣列
3885
					if($emptyArray["empty"]==="false"){
3886
 
3887
						#設置執行失敗
3888
						$result["status"]="true";
3889
 
3890
						#設置不為空陣列
3891
						$result["empty"]="false";
3892
 
3893
						#回傳結果
3894
						return $result;
3895
 
3896
						}#if end
3897
 
3898
					}#else end
3899
 
3900
				}#foreach end
3901
 
3902
			#設置執行正常
3903
			$result["status"]="true";
3904
 
3905
			#設置為空陣列
3906
			$result["empty"]="true";
3907
 
3908
			#回傳結果
3909
			return $result;
3910
 
3911
 
3912
			}#if end
3913
 
3914
		#反之為空陣列
3915
		else{
3916
 
3917
			#設置執行正常
3918
			$result["status"]="true";
3919
 
3920
			#設置為空陣列
3921
			$result["empty"]="true";
3922
 
3923
			#回傳結果
3924
			return $result;
3925
 
3926
			}#else end
3927
 
3928
		}#function emptyArray end
3929
 
3930
	/*
3931
	#函式說明:
3932
	#回傳變數的解析結果.
3933
	#回傳結果:
3934
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3935
	#$result["content"],變數的解析結果.
3936
	#$result["function"],當前執行的函數
3937
	#$result["error"],涵式錯誤訊息陣列
3938
	#必填參數:
3939
	#$conf["var"],any,任意內容,通常為變數.
3940
	$conf["var"]=;
3941
	#可省略參數:
3942
	#無.
3943
	#參考資料:
3944
	#無.
3945
	#備註:
3946
	#無.
3947
	*/
3948
	public static function toSource(&$conf){
226 liveuser 3949
 
3 liveuser 3950
		#初始化要回傳的內容
3951
		$result=array();
3952
 
3953
		#取得當前執行的函數名稱
3954
		$result["function"]=__FUNCTION__;
3955
 
3956
		#如果 $conf 不為陣列
3957
		if(gettype($conf)!="array"){
226 liveuser 3958
 
3 liveuser 3959
			#設置執行失敗
3960
			$result["status"]="false";
226 liveuser 3961
 
3 liveuser 3962
			#設置執行錯誤訊息
3963
			$result["error"][]="\$conf變數須為陣列形態";
3964
 
3965
			#如果傳入的參數為 null
3966
			if($conf==null){
226 liveuser 3967
 
3 liveuser 3968
				#設置執行錯誤訊息
3969
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 3970
 
3 liveuser 3971
				}#if end
3972
 
3973
			#回傳結果
3974
			return $result;
226 liveuser 3975
 
3 liveuser 3976
			}#if end
226 liveuser 3977
 
3 liveuser 3978
		#檢查參數
3979
		#函式說明:
3980
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3981
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3982
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3983
		#$result["function"],當前執行的函式名稱.
3984
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3985
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3986
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3987
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3988
		#必填寫的參數:
3989
		#$conf["variableCheck.checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3990
		$conf["variableCheck.checkArguments"]["varInput"]=&$conf;
3991
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3992
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableName"]=array("var");
226 liveuser 3993
		#$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 3994
		$conf["variableCheck.checkArguments"]["mustBeFilledVariableType"]=array(null);
3995
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3996
		$conf["variableCheck.checkArguments"]["referenceVarKey"]="variableCheck.checkArguments";
3997
		#可以省略的參數:
3998
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"false"。
3999
		#$conf["canBeEmptyString"]="false";
4000
		#$conf["variableCheck.checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4001
		#$conf["variableCheck.checkArguments"]["skipableVariableName"]=array("varPassed");
226 liveuser 4002
		#$conf["variableCheck.checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 4003
		#$conf["variableCheck.checkArguments"]["skipableVariableType"]=array(null);
4004
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4005
		#$conf["variableCheck.checkArguments"]["skipableVarDefaultValue"]=array(null);
4006
		$checkArguments=variableCheck::checkArguments($conf["variableCheck.checkArguments"]);
4007
		unset($conf["variableCheck.checkArguments"]);
226 liveuser 4008
 
3 liveuser 4009
		#如果 檢查參數 失敗
4010
		if($checkArguments["status"]==="false"){
226 liveuser 4011
 
3 liveuser 4012
			#設置執行不正常
4013
			$result["status"]="false";
226 liveuser 4014
 
3 liveuser 4015
			#設置執行錯誤
4016
			$result["error"]=$checkArguments;
226 liveuser 4017
 
3 liveuser 4018
			#回傳節果
4019
			return $result;
226 liveuser 4020
 
3 liveuser 4021
			}#if end
226 liveuser 4022
 
3 liveuser 4023
		#如果 檢查參數 不通過
4024
		if($checkArguments["passed"]==="false"){
226 liveuser 4025
 
3 liveuser 4026
			#設置執行不正常
4027
			$result["status"]="false";
226 liveuser 4028
 
3 liveuser 4029
			#設置執行錯誤
4030
			$result["error"]=$checkArguments;
226 liveuser 4031
 
3 liveuser 4032
			#回傳節果
4033
			return $result;
226 liveuser 4034
 
3 liveuser 4035
			}#if end
226 liveuser 4036
 
3 liveuser 4037
		#函式說明:
4038
		#記錄程式輸出的結果.
4039
		#回傳結果:
4040
		#$result["status"],爲查詢是否成功,若爲"true"則成功,若爲"false"則表示失敗了.
4041
		#$result["error"],錯誤訊息.
4042
		#$result["content"],程式的輸出.
4043
		#$result["function"],當前執行的涵式
4044
		#必填參數:
4045
		#$conf["code2run"],字串陣列,爲要運行的程式內容,每個元素代表一段php程式.內容不必含有php tag,但結尾必須為「;」.
4046
		$conf["record::getOutput"]["code2run"]=array("var_dump(\$varPassed[0]);");
4047
		#可省略參數:
4048
		#可省略參數:
4049
		#$conf["varPassed"],陣列,為要使用到的變數,在code2run參數裡面"\$varPassed[n]"代表第n+1個變數.
4050
		$conf["record::getOutput"]["varPassed"]=array($conf["var"]);
4051
		#參考資料:
4052
		#無.
4053
		#備註:
4054
		#無.
4055
		$getOutput=record::getOutput($conf["record::getOutput"]);
4056
		unset($conf["record::getOutput"]);
226 liveuser 4057
 
3 liveuser 4058
		#如果執行失敗
4059
		if($getOutput["status"]==="false"){
226 liveuser 4060
 
3 liveuser 4061
			#設置錯誤識別
4062
			$result["status"]="false";
226 liveuser 4063
 
3 liveuser 4064
			#設置錯誤訊息
4065
			$result["error"]=$getOutput;
226 liveuser 4066
 
3 liveuser 4067
			#回傳結果
4068
			return $result;
226 liveuser 4069
 
3 liveuser 4070
			}#if end
226 liveuser 4071
 
3 liveuser 4072
		#取得輸出
4073
		$result["content"]=$getOutput["content"];
226 liveuser 4074
 
3 liveuser 4075
		#設置執行正常
4076
		$result["status"]="true";
226 liveuser 4077
 
3 liveuser 4078
		#回傳結果
4079
		return $result;
226 liveuser 4080
 
3 liveuser 4081
		}#functino toSource end
4082
 
4083
	/*
4084
	#函式說明:
4085
	#隱藏元素中可能含有機密的內容.
4086
	#回傳結果:
4087
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4088
	#$result["content"],隱藏內容後的結果.
4089
	#$result["function"],當前執行的函數
4090
	#$result["error"],涵式錯誤訊息陣列
4091
	#必填參數:
4092
	#$conf["params"],陣列,要處理的變數.
4093
	$conf["params"]=;
4094
	#可省略參數:
4095
	#$conf["keyWords"],字串陣列,針對params中每一個的key,若擁有該陣列中任一元素的數值(關鍵字),則要將其內容隱藏,預設為array("password","key","secret").
4096
	#$conf["keyWords"]=array("password","key","secret","Secret");
4097
	#$conf["changeTo"],字串,將要隱藏的參數內容置換為什麼字串內容,預設為"[classified content]".
4098
	#$conf["changeTo"]="[classified content]";
4099
	#參考資料:
4100
	#無.
4101
	#備註:
4102
	#目前不支援物件.
4103
	*/
4104
	public static function hideParams(&$conf){
226 liveuser 4105
 
3 liveuser 4106
		#取得當前執行的函式
4107
		$result["function"]=__FUNCTION__;
4108
 
4109
		#取得使用的參數
4110
		$result["argu"]=$conf;
4111
 
4112
		#函式說明:
4113
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4114
		#回傳結果:
4115
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4116
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4117
		#$result["function"],當前執行的函式名稱.
4118
		#$result["argu"],設置給予的參數.
4119
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4120
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4121
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4122
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4123
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4124
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4125
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4126
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4127
		#必填參數:
4128
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4129
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4130
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4131
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4132
		#可省略參數:
4133
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4134
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("params");
4135
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4136
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
4137
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4138
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4139
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4140
		#$conf["canNotBeEmpty"]=array();
4141
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4142
		#$conf["canBeEmpty"]=array();
4143
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4144
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("hideSecret");
4145
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4146
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("keyWords","changedTo");
4147
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4148
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string");
4149
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4150
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(array("password","key","secret","Secret"),"[classified content]");
4151
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4152
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4153
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4154
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4155
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4156
		#$conf["arrayCountEqualCheck"][]=array();
4157
		#參考資料:
4158
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4159
		#備註:
4160
		#無.
4161
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4162
		unset($conf["variableCheck::checkArguments"]);
4163
 
4164
		#若執行失敗
4165
		if($checkArguments["status"]==="false"){
226 liveuser 4166
 
3 liveuser 4167
			#設置執行失敗
4168
			$result["status"]="false";
226 liveuser 4169
 
3 liveuser 4170
			#設置錯誤訊息
4171
			$result["error"]=$checkArguments;
226 liveuser 4172
 
3 liveuser 4173
			#回傳內容
4174
			return $reuslt;
226 liveuser 4175
 
3 liveuser 4176
			}#if end
4177
 
4178
		#若檢查不通過
4179
		if($checkArguments["passed"]==="false"){
226 liveuser 4180
 
3 liveuser 4181
			#設置執行失敗
4182
			$result["status"]="false";
226 liveuser 4183
 
3 liveuser 4184
			#設置錯誤訊息
4185
			$result["error"]=$checkArguments;
226 liveuser 4186
 
3 liveuser 4187
			#回傳內容
4188
			return $result;
226 liveuser 4189
 
3 liveuser 4190
			}#if end
4191
 
4192
		#初始化待處理的陣列變數
4193
		$unprocessedArray=array(&$conf["params"]);
4194
 
4195
		#針對陣列中每個元素
4196
		while(isset($unprocessedArray[0])){
226 liveuser 4197
 
3 liveuser 4198
			/*
4199
			#debug
4200
			echo "<p>";
4201
			var_dump($unprocessedArray);
4202
			*/
226 liveuser 4203
 
3 liveuser 4204
			#取得當前元素
4205
			$element=&$unprocessedArray[0];
226 liveuser 4206
 
3 liveuser 4207
			/*
4208
			#debug
4209
			echo "<br>";
4210
			var_dump(gettype($element));
4211
			*/
226 liveuser 4212
 
3 liveuser 4213
			#如果元素為陣列
4214
			if(gettype($element)==="array"){
226 liveuser 4215
 
3 liveuser 4216
				#針對每個變數
4217
				foreach($element as $arrayKey=>$arrayVal){
226 liveuser 4218
 
3 liveuser 4219
					/*
4220
					#debug
4221
					echo "<p>";
4222
					echo "foreach in \$element, key=".$arrayKey."<br>";
4223
					echo "content of \$element:".print_r($element,true);
226 liveuser 4224
 
3 liveuser 4225
					#debug
4226
					echo "<p>";
4227
					echo "check key:".$arrayKey;
4228
					*/
226 liveuser 4229
 
3 liveuser 4230
					#函式說明:
4231
					#檢查一個字串裡面是否有多個關鍵字
4232
					#回傳結果:
4233
					#$result["status"],"true"代表執行成功,"false"代表執行失敗.
4234
					#$result["error"],錯誤訊息.
4235
					#$result["function"],當前執行的函數名稱.
4236
					#$result["founded"],是否有找到的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
4237
					#$result["foundedKeyWords"],找到的關鍵字.
4238
					#$result["foundedAll"],是否有找到全部的關鍵字,"true"代表有;"false"代表沒有.
4239
					#$result["argu"],使用的參數.
4240
					#必填參數:
4241
					#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
4242
					$conf["search::findManyKeyWords"]["keyWords"]=$conf["keyWords"];
4243
					#$conf["string"],字串,要被搜尋的字串內容.
4244
					$conf["search::findManyKeyWords"]["string"]=$arrayKey;
4245
					#可省略參數:
4246
					#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合.
4247
					#$conf["completeEqual"]="true";
4248
					#參考資料:
4249
					#無.
4250
					#備註:
4251
					#無.
4252
					$findManyKeyWords=search::findManyKeyWords($conf["search::findManyKeyWords"]);
4253
					unset($conf["search::findManyKeyWords"]);
226 liveuser 4254
 
3 liveuser 4255
					/*
4256
					#debug
4257
					echo "<p>";
4258
					echo "content of \$findManyKeyWords:<br>";
4259
					var_dump($findManyKeyWords);
4260
					*/
226 liveuser 4261
 
3 liveuser 4262
					#若執行失敗
4263
					if($findManyKeyWords["status"]==="false"){
226 liveuser 4264
 
3 liveuser 4265
						#設置執行失敗
4266
						$result["status"]="false";
226 liveuser 4267
 
3 liveuser 4268
						#設置錯誤訊息
4269
						$result["error"]=$findManyKeyWords;
226 liveuser 4270
 
3 liveuser 4271
						#回傳內容
4272
						return $reuslt;
226 liveuser 4273
 
3 liveuser 4274
						}#if end
226 liveuser 4275
 
3 liveuser 4276
					#若有符合的關鍵字
4277
					if($findManyKeyWords["founded"]==="true"){
226 liveuser 4278
 
3 liveuser 4279
						/*
4280
						#deubg
4281
						echo "<p>";
4282
						echo "置換 key 為 ".$arrayKey." 者的內容為 ".$conf["changedTo"];
4283
						*/
226 liveuser 4284
 
3 liveuser 4285
						#替換其內容
4286
						$element[$arrayKey]=$conf["changedTo"];
226 liveuser 4287
 
3 liveuser 4288
						/*
4289
						#debug
4290
						echo "<p>";
4291
						echo "替換其內容後 為 ".print_r($element,true);
4292
						*/
226 liveuser 4293
 
3 liveuser 4294
						#針對下個元素
4295
						continue;
226 liveuser 4296
 
3 liveuser 4297
						}#if end
226 liveuser 4298
 
3 liveuser 4299
					#如果數值為陣列
4300
					if(gettype($arrayVal)==="array"){
226 liveuser 4301
 
3 liveuser 4302
						/*
4303
						#deubg
4304
						echo "<p>";
4305
						echo "新增待處理的陣列 其 key 為 ".$arrayKey;
4306
						*/
226 liveuser 4307
 
3 liveuser 4308
						#儲存到待處理的陣列中
4309
						$unprocessedArray[]=&$element[$arrayKey];
226 liveuser 4310
 
3 liveuser 4311
						/*
4312
						#debug
4313
						echo "<p>";
4314
						echo "新增待處理的陣列後 其 內容 為 ".print_r($unprocessedArray,true);
4315
						*/
226 liveuser 4316
 
3 liveuser 4317
						}#if end
226 liveuser 4318
 
3 liveuser 4319
					}#foreach end
4320
 
4321
				}#if end
226 liveuser 4322
 
3 liveuser 4323
			/*
4324
			#debug
4325
			echo "<br>";
4326
			echo "before array_shift, count of \$unprocessedArray:".count($unprocessedArray);
4327
			echo "<br>";
4328
			var_dump($unprocessedArray);
4329
			*/
226 liveuser 4330
 
3 liveuser 4331
			#將第一個元素移除
4332
			array_shift($unprocessedArray);
226 liveuser 4333
 
3 liveuser 4334
			/*
4335
			#debug
4336
			echo "<br>";
4337
			echo "after array_shift, count of \$unprocessedArray:".count($unprocessedArray);
4338
			echo "<br>";
4339
			var_dump($unprocessedArray);
4340
			echo "<hr>";
4341
			*/
226 liveuser 4342
 
3 liveuser 4343
			}#while end
4344
 
4345
		#設置回傳內容
4346
		$result["content"]=$conf["params"];
4347
 
4348
		#設置執行正常
4349
		$result["status"]="true";
4350
 
4351
		#回傳結果
4352
		return $result;
226 liveuser 4353
 
3 liveuser 4354
		}#function hideParams end
4355
 
4356
	/*
4357
	#函式說明:
4358
	#取得簡單的錯誤訊息
4359
	#回傳結果:
4360
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4361
	#$result["content"],結果.
4362
	#$result["function"],當前執行的函數
4363
	#$result["error"],涵式錯誤訊息陣列
4364
	#必填參數:
4365
	#$conf["error"],陣列,要處理的變數.
4366
	$conf["error"]=array();
4367
	#可省略參數:
4368
	#無
4369
	#參考資料:
4370
	#無.
4371
	#備註:
4372
	#無.
4373
	*/
4374
	public static function getSimpleError(&$conf){
226 liveuser 4375
 
3 liveuser 4376
		#var_dump($conf);
226 liveuser 4377
 
3 liveuser 4378
		#初始化要回傳的結果
4379
		$result=array();
4380
 
4381
		#取得當前執行的函數名稱
4382
		$result["function"]=__FUNCTION__;
4383
 
4384
		#如果沒有參數
4385
		if(func_num_args()==0){
4386
 
4387
			#設置執行失敗
4388
			$result["status"]="false";
4389
 
4390
			#設置執行錯誤訊息
4391
			$result["error"]="函數".$result["function"]."需要參數";
4392
 
4393
			#無窮迴圈
4394
			while(true){
226 liveuser 4395
 
3 liveuser 4396
				#遞迴執行
4397
				$conf["self::getSimpleError"]["error"]=$result;
4398
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4399
				unset($conf["self::getSimpleError"]);
226 liveuser 4400
 
3 liveuser 4401
				#如果執行失敗
4402
				if($simpleError["status"]==="false"){
226 liveuser 4403
 
3 liveuser 4404
					#設置執行失敗
4405
					$result["status"]="false";
4406
 
4407
					#設置執行錯誤訊息
4408
					$result["error"]=$simpleError;
226 liveuser 4409
 
3 liveuser 4410
					#下一輪
4411
					continue;
226 liveuser 4412
 
3 liveuser 4413
					}#if end
226 liveuser 4414
 
3 liveuser 4415
				#結束 while
4416
				break;
226 liveuser 4417
 
3 liveuser 4418
				}#while end
4419
 
4420
			return $result;
4421
 
4422
			}#if end
4423
 
4424
		#取得參數
4425
		$result["argu"]=$conf;
4426
 
4427
		#如果 $conf 不為陣列
4428
		if(gettype($conf)!=="array"){
4429
 
4430
			#設置執行失敗
4431
			$result["status"]="false";
4432
 
4433
			#設置執行錯誤訊息
4434
			$result["error"][]="\$conf變數須為陣列形態";
4435
 
4436
			#如果傳入的參數為 null
4437
			if(is_null($conf)){
4438
 
4439
				#設置執行錯誤訊息
4440
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4441
 
4442
				}#if end
226 liveuser 4443
 
3 liveuser 4444
			#無窮迴圈
4445
			while(true){
226 liveuser 4446
 
3 liveuser 4447
				#遞迴執行
4448
				$conf["self::getSimpleError"]["error"]=$result;
4449
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4450
				unset($conf["self::getSimpleError"]);
226 liveuser 4451
 
3 liveuser 4452
				#如果執行失敗
4453
				if($simpleError["status"]==="false"){
226 liveuser 4454
 
3 liveuser 4455
					#設置執行失敗
4456
					$result["status"]="false";
4457
 
4458
					#設置執行錯誤訊息
4459
					$result["error"]=$simpleError;
226 liveuser 4460
 
3 liveuser 4461
					#下一輪
4462
					continue;
226 liveuser 4463
 
3 liveuser 4464
					}#if end
226 liveuser 4465
 
3 liveuser 4466
				#結束 while
4467
				break;
226 liveuser 4468
 
3 liveuser 4469
				}#while end
4470
 
4471
			#回傳結果
4472
			return $result;
4473
 
4474
			}#if end
226 liveuser 4475
 
3 liveuser 4476
		#函式說明:
4477
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4478
		#回傳結果:
4479
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4480
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4481
		#$result["function"],當前執行的函式名稱.
4482
		#$result["argu"],設置給予的參數.
4483
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4484
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4485
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4486
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4487
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4488
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4489
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4490
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4491
		#必填參數:
4492
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4493
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4494
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4495
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4496
		#可省略參數:
4497
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4498
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("error");
4499
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4500
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
4501
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4502
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
4503
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4504
		#$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("gw_primary_ids");
4505
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4506
		#$conf["canBeEmpty"]=array();
4507
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4508
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4509
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4510
		#$conf["skipableVariableName"]=array();
4511
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4512
		#$conf["skipableVariableType"]=array();
4513
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4514
		#$conf["skipableVarDefaultValue"]=array("");
4515
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4516
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4517
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4518
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4519
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4520
		#$conf["arrayCountEqualCheck"][]=array();
4521
		#參考資料:
4522
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4523
		#備註:
4524
		#無.
4525
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4526
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4527
 
3 liveuser 4528
		#如果執行失敗
4529
		if($checkArguments["status"]==="false"){
226 liveuser 4530
 
3 liveuser 4531
			#設置執行失敗
4532
			$result["status"]="false";
4533
 
4534
			#設置執行錯誤訊息
4535
			$result["error"]=$checkArguments;
4536
 
4537
			#無窮迴圈
4538
			while(true){
226 liveuser 4539
 
3 liveuser 4540
				#遞迴執行
4541
				$conf["self::getSimpleError"]["error"]=$result;
4542
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4543
				unset($conf["self::getSimpleError"]);
226 liveuser 4544
 
3 liveuser 4545
				#如果執行失敗
4546
				if($simpleError["status"]==="false"){
226 liveuser 4547
 
3 liveuser 4548
					#設置執行失敗
4549
					$result["status"]="false";
4550
 
4551
					#設置執行錯誤訊息
4552
					$result["error"]=$simpleError;
226 liveuser 4553
 
3 liveuser 4554
					#下一輪
4555
					continue;
226 liveuser 4556
 
3 liveuser 4557
					}#if end
226 liveuser 4558
 
3 liveuser 4559
				#如果檢查不通過
4560
				if($simpleError["passed"]==="false"){
226 liveuser 4561
 
3 liveuser 4562
					#設置執行失敗
4563
					$result["status"]="false";
4564
 
4565
					#設置執行錯誤訊息
4566
					$result["error"]=$simpleError;
226 liveuser 4567
 
3 liveuser 4568
					#下一輪
4569
					continue;
226 liveuser 4570
 
3 liveuser 4571
					}#if end
226 liveuser 4572
 
3 liveuser 4573
				#結束 while
4574
				break;
226 liveuser 4575
 
3 liveuser 4576
				}#while end
4577
 
4578
			#取得 simpleError
4579
			$result["simpleError"]=$simpleError["content"];
4580
 
4581
			#回傳結果
4582
			return $result;
226 liveuser 4583
 
3 liveuser 4584
			}#if end
226 liveuser 4585
 
3 liveuser 4586
		#如果執行失敗
4587
		if($checkArguments["passed"]==="false"){
226 liveuser 4588
 
3 liveuser 4589
			#設置執行失敗
4590
			$result["status"]="false";
4591
 
4592
			#設置執行錯誤訊息
4593
			$result["error"]=$checkArguments;
226 liveuser 4594
 
3 liveuser 4595
			#無窮迴圈
4596
			while(true){
226 liveuser 4597
 
3 liveuser 4598
				#遞迴執行
4599
				$conf["self::getSimpleError"]["error"]=$result;
4600
				$simpleError=self::getSimpleError($conf["self::getSimpleError"]);
4601
				unset($conf["self::getSimpleError"]);
226 liveuser 4602
 
3 liveuser 4603
				#如果執行失敗
4604
				if($simpleError["status"]==="false"){
226 liveuser 4605
 
3 liveuser 4606
					#設置執行失敗
4607
					$result["status"]="false";
4608
 
4609
					#設置執行錯誤訊息
4610
					$result["error"]=$simpleError;
226 liveuser 4611
 
3 liveuser 4612
					#下一輪
4613
					continue;
226 liveuser 4614
 
3 liveuser 4615
					}#if end
226 liveuser 4616
 
3 liveuser 4617
				#如果檢查不通過
4618
				if($simpleError["passed"]==="false"){
226 liveuser 4619
 
3 liveuser 4620
					#設置執行失敗
4621
					$result["status"]="false";
4622
 
4623
					#設置執行錯誤訊息
4624
					$result["error"]=$simpleError;
226 liveuser 4625
 
3 liveuser 4626
					#下一輪
4627
					continue;
226 liveuser 4628
 
3 liveuser 4629
					}#if end
226 liveuser 4630
 
3 liveuser 4631
				#結束 while
4632
				break;
226 liveuser 4633
 
3 liveuser 4634
				}#while end
4635
 
4636
			#取得 simpleError
4637
			$result["simpleError"]=$simpleError["content"];
4638
 
4639
			#回傳結果
4640
			return $result;
226 liveuser 4641
 
3 liveuser 4642
			}#if end
226 liveuser 4643
 
3 liveuser 4644
		#var_dump($result);
226 liveuser 4645
 
3 liveuser 4646
		#初始化簡單的錯誤
4647
		$result["content"]=&$conf["error"];
4648
 
4649
		#如果底下有 error 元素
4650
		while(isset($result["content"]["error"])){
226 liveuser 4651
 
3 liveuser 4652
			#var_dump($result["content"]["error"]);
226 liveuser 4653
 
3 liveuser 4654
			#取得其位置
4655
			$result["content"]=&$result["content"]["error"];
226 liveuser 4656
 
3 liveuser 4657
			}#while end
226 liveuser 4658
 
3 liveuser 4659
		#初始化新的結果
4660
		$newContentStr="";
226 liveuser 4661
 
3 liveuser 4662
		#如果 content 不是字串
4663
		if(gettype($result["content"])!=="string"){
226 liveuser 4664
 
3 liveuser 4665
			#var_dump($result["content"]);
226 liveuser 4666
 
3 liveuser 4667
			#針對每個錯誤訊息
4668
			foreach($result["content"] as $errorLine){
226 liveuser 4669
 
3 liveuser 4670
				#如果不是字串
4671
				if(gettype($errorLine)!=="string"){
226 liveuser 4672
 
3 liveuser 4673
					#將陣列轉換成字串
4674
					$errorLine=print_r($errorLine,true);
226 liveuser 4675
 
3 liveuser 4676
					}#if end
226 liveuser 4677
 
3 liveuser 4678
				#串接結果
4679
				$newContentStr=$newContentStr.$errorLine.PHP_EOL;
226 liveuser 4680
 
3 liveuser 4681
				}#foreache end
226 liveuser 4682
 
4683
			}#if end
4684
 
3 liveuser 4685
		#設置結果內容
4686
		$result["content"]=$newContentStr;
226 liveuser 4687
 
3 liveuser 4688
		#設置執行正常
4689
		$result["status"]=true;
226 liveuser 4690
 
3 liveuser 4691
		#回傳結果
4692
		return $result;
226 liveuser 4693
 
3 liveuser 4694
		}#function getSimpleError end
226 liveuser 4695
 
3 liveuser 4696
	/*
4697
	#函式說明:
4698
	#檢查字串是否符合指定格式
4699
	#回傳結果:
4700
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4701
	#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
4702
	#$result["content"],詳細結果訊息陣列,若passed為"false"則會有該內容.
4703
	#$result["newInputArgu"],剩下尚未檢驗格式的input.
4704
	#$result["function"],當前執行的函數.
4705
	#$result["error"],涵式錯誤訊息陣列.
4706
	#必填參數:
4707
	#$conf["input"],字串,要檢查格式的字串.
4708
	$conf["input"]="";
4709
	#可省略參數:
4710
	#$conf["equalWith"],字串,輸入字串是否等於該參數內容.
4711
	#$conf["equalWith"]="";
4712
	#$conf["startWith"],字串,開頭要是什麼字串內容.
4713
	#$conf["startWith"]="";
4714
	#$conf["endWith"],字串,結尾要是什麼字串內容.
4715
	#$conf["endWith"]="";
4716
	#$conf["centerWith"],字串,非開頭(預設無,若有指定startWith參數,則為該參數內容)跟結尾(預設無,若有指定endWith參數,則為該參數內容)的內容中要有什麼字串.
4717
	#$conf["centerWith"]="";
4718
	#$conf["length"],字串整數,字串的長度要多少(bytes).
4719
	#$conf["length"]="";
4720
	#$conf["lengthGrapheme"],字串整數,字串的長度要多少字位(grapheme).
4721
	#$conf["lengthGrapheme"]="";
4722
	#$conf["section"],字串陣列,元素數量代表,輸入字串的格式可以區分成多少段.每個元素為本函式的參數陣列剔除input跟section參數.
4723
	#$conf["section"]=array();
4724
	#參考資料:
4725
	#grapheme_strlen=>https://www.php.net/manual/en/function.grapheme-strlen.php
4726
	#grapheme/字位/可以書寫的最小單位=>https://zh.wikipedia.org/zh-tw/%E5%AD%97%E4%BD%8D
4727
	#grapheme_substr=>https://www.php.net/manual/en/function.grapheme-substr.php
4728
	#備註:
4729
	#無.
4730
	*/
4731
	public static function checkStringFormat(&$conf){
226 liveuser 4732
 
3 liveuser 4733
		#初始化要回傳的內容
4734
		$result=array();
4735
 
4736
		#取得當前執行的函數名稱
4737
		$result["function"]=__FUNCTION__;
4738
 
4739
		#如果 $conf 不為陣列
4740
		if(gettype($conf)!="array"){
226 liveuser 4741
 
3 liveuser 4742
			#設置執行失敗
4743
			$result["status"]="false";
226 liveuser 4744
 
3 liveuser 4745
			#設置執行錯誤訊息
4746
			$result["error"][]="\$conf變數須為陣列形態";
4747
 
4748
			#如果傳入的參數為 null
4749
			if($conf==null){
226 liveuser 4750
 
3 liveuser 4751
				#設置執行錯誤訊息
4752
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 4753
 
3 liveuser 4754
				}#if end
4755
 
4756
			#回傳結果
4757
			return $result;
226 liveuser 4758
 
3 liveuser 4759
			}#if end
226 liveuser 4760
 
3 liveuser 4761
		#取得參數
4762
		$result["argu"]=$conf;
4763
 
4764
		#函式說明:
4765
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4766
		#回傳結果:
4767
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4768
		#$result["error"],執行不正常結束的錯訊息陣列.
4769
		#$result["simpleError"],簡單表示的錯誤訊息.
4770
		#$result["function"],當前執行的函式名稱.
4771
		#$result["argu"],設置給予的參數.
4772
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4773
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4774
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4775
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4776
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4777
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4778
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4779
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4780
		#必填參數:
4781
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4782
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4783
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4784
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4785
		#可省略參數:
4786
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4787
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
4788
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4789
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4790
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4791
		#$conf["variadble::checkArguments"]["canBeEmptyString"]="false";
4792
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4793
		#$conf["canNotBeEmpty"]=array();
4794
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4795
		#$conf["canBeEmpty"]=array();
4796
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4797
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("equalWith","startWith","centerWith","endWith","length","lengthGrapheme","section");
4798
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4799
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("equalWith","startWith","centerWith","endWith","length","lengthGrapheme","section");
4800
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4801
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string","array");
4802
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4803
		#$conf["skipableVarDefaultValue"]=array("");
4804
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4805
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4806
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4807
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4808
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
4809
		$conf["variableCheck::checkArguments"]["disallowAllSkipableVarNotExist"]="true";
4810
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4811
		#$conf["arrayCountEqualCheck"][]=array();
4812
		#參考資料:
4813
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4814
		#備註:
4815
		#無.
4816
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4817
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 4818
 
3 liveuser 4819
		#如果檢查失敗
4820
		if($checkArguments["status"]==="false"){
226 liveuser 4821
 
3 liveuser 4822
			#設置錯誤識別
4823
			$result["status"]="false";
226 liveuser 4824
 
3 liveuser 4825
			#設置錯誤訊息
4826
			$result["error"]=$checkArguments;
226 liveuser 4827
 
3 liveuser 4828
			#回傳結果
4829
			return $result;
226 liveuser 4830
 
3 liveuser 4831
			}#if end
226 liveuser 4832
 
3 liveuser 4833
		#如果檢查不通過
4834
		if($checkArguments["passed"]==="false"){
226 liveuser 4835
 
3 liveuser 4836
			#設置錯誤識別
4837
			$result["status"]="false";
226 liveuser 4838
 
3 liveuser 4839
			#設置錯誤訊息
4840
			$result["error"]=$checkArguments;
226 liveuser 4841
 
3 liveuser 4842
			#回傳結果
4843
			return $result;
226 liveuser 4844
 
3 liveuser 4845
			}#if end
226 liveuser 4846
 
3 liveuser 4847
		#預設剩下未檢查格式的input為空字串
4848
		$result["newInputArgu"]="";
226 liveuser 4849
 
3 liveuser 4850
		#如果存在分段的格式設定
4851
		if(isset($conf["section"])){
226 liveuser 4852
 
3 liveuser 4853
			#預設都是尚未檢驗的字串
4854
			$newInputArgu=$conf["input"];
226 liveuser 4855
 
3 liveuser 4856
			#針對每段
4857
			foreach($conf["section"] as $index => $sec){
226 liveuser 4858
 
3 liveuser 4859
				#更新input參數
4860
				$sec["input"]=$newInputArgu;
226 liveuser 4861
 
3 liveuser 4862
				#處理該section
4863
				#函式說明:
4864
				#檢查字串是否符合指定格式
4865
				#回傳結果:
4866
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4867
				#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
4868
				#$result["content"],詳細結果訊息陣列,若passed為"false"則會有該內容.
4869
				#$result["newInputArgu"],剩下尚未檢驗格式的input.
4870
				#$result["function"],當前執行的函數.
4871
				#$result["error"],涵式錯誤訊息陣列.
4872
				#必填參數:
4873
				#$conf["input"],字串,要檢查格式的字串.
4874
				#$conf["variableCheck::checkStringFormat"]["input"]=$newInputArgu;
4875
				#可省略參數:
4876
				#$conf["equalWith"],字串,輸入字串是否等於該參數內容.
4877
				#$conf["equalWith"]="";
4878
				#$conf["startWith"],字串,開頭要是什麼字串內容.
4879
				#$conf["startWith"]="";
4880
				#$conf["endWith"],字串,結尾要是什麼字串內容.
4881
				#$conf["endWith"]="";
4882
				#$conf["centerWith"],字串,非開頭(預設無,若有指定startWith參數,則為該參數內容)跟結尾(預設無,若有指定endWith參數,則為該參數內容)的內容中要有什麼字串.
4883
				#$conf["centerWith"]="";
4884
				#$conf["length"],字串整數,字串的長度要多少(bytes).
4885
				#$conf["length"]="";
4886
				#$conf["lengthGrapheme"],字串整數,字串的長度要多少字位(grapheme).
4887
				#$conf["lengthGrapheme"]="";
226 liveuser 4888
				#$conf["variableCheck::checkStringFormat"]["section"]=$nextSectionArgu;
3 liveuser 4889
				#參考資料:
4890
				#grapheme_strlen=>https://www.php.net/manual/en/function.grapheme-strlen.php
4891
				#grapheme/字位/可以書寫的最小單位=>https://zh.wikipedia.org/zh-tw/%E5%AD%97%E4%BD%8D
4892
				#備註:
4893
				#無.
4894
				$conf["variableCheck::checkStringFormat"]=$sec;
4895
				$checkStringFormat=variableCheck::checkStringFormat($conf["variableCheck::checkStringFormat"]);
4896
				unset($conf["variableCheck::checkStringFormat"]);
226 liveuser 4897
 
3 liveuser 4898
				#如果執行失敗
4899
				if($checkStringFormat["status"]=="false"){
226 liveuser 4900
 
3 liveuser 4901
					#設置錯誤識別
4902
					$result["status"]="false";
226 liveuser 4903
 
3 liveuser 4904
					#設置錯誤訊息
4905
					$result["error"]=$checkStringFormat;
226 liveuser 4906
 
3 liveuser 4907
					#回傳結果
4908
					return $result;
226 liveuser 4909
 
3 liveuser 4910
					}#if end
226 liveuser 4911
 
3 liveuser 4912
				#如果不通過
4913
				if($checkStringFormat["passed"]=="false"){
226 liveuser 4914
 
3 liveuser 4915
					#回傳結果
4916
					return $checkStringFormat;
226 liveuser 4917
 
3 liveuser 4918
					}#if end
226 liveuser 4919
 
3 liveuser 4920
				#取得新的input參數
4921
				$newInputArgu=$checkStringFormat["newInputArgu"];
226 liveuser 4922
 
3 liveuser 4923
				}#foreach end
226 liveuser 4924
 
3 liveuser 4925
			}#if end
226 liveuser 4926
 
3 liveuser 4927
		#到這邊代表不存在分段的格式設定
226 liveuser 4928
 
3 liveuser 4929
		#初始化關鍵字
4930
		$keywords=array();
226 liveuser 4931
 
3 liveuser 4932
		#如果有 startWith
4933
		if(isset($conf["startWith"])){
226 liveuser 4934
 
3 liveuser 4935
			#設置關鍵字
4936
			$keywords[]=$conf["startWith"];
226 liveuser 4937
 
3 liveuser 4938
			}#if end
226 liveuser 4939
 
3 liveuser 4940
		#如果有 centerWith
4941
		if(isset($conf["centerWith"])){
226 liveuser 4942
 
3 liveuser 4943
			#設置關鍵字
4944
			$keywords[]=$conf["centerWith"];
226 liveuser 4945
 
3 liveuser 4946
			}#if end
226 liveuser 4947
 
3 liveuser 4948
		#如果有 endWith
4949
		if(isset($conf["endWith"])){
226 liveuser 4950
 
3 liveuser 4951
			#設置關鍵字
4952
			$keywords[]=$conf["endWith"];
226 liveuser 4953
 
3 liveuser 4954
			}#if end
226 liveuser 4955
 
3 liveuser 4956
		#如果存在關鍵字
4957
		if(!empty($keywords)){
226 liveuser 4958
 
3 liveuser 4959
			#若有指定bytes長度
4960
			if(isset($conf["length"])){
226 liveuser 4961
 
3 liveuser 4962
				#取得輸入的字串長度
4963
				$length=strlen($conf["input"]);
226 liveuser 4964
 
3 liveuser 4965
				#如果長度不足
4966
				if($length<(int)$conf["length"]){
226 liveuser 4967
 
3 liveuser 4968
					#設置執行正常
4969
					$result["status"]="true";
226 liveuser 4970
 
3 liveuser 4971
					#設置檢查不通過
4972
					$result["passed"]="false";
226 liveuser 4973
 
3 liveuser 4974
					#設置詳細結果訊息陣列.
4975
					$result["content"][]="input參數(".$conf["input"].")的bytes長度(".$length.")小於length參數(".$conf["length"].")";
226 liveuser 4976
 
3 liveuser 4977
					#回傳結果
4978
					return $result;
226 liveuser 4979
 
3 liveuser 4980
					}#if end
226 liveuser 4981
 
3 liveuser 4982
				#函式說明:
4983
				#unicode的字串分割,比str_split的支援度高.
4984
				#回傳結果:
4985
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 4986
				#$result["error"],錯誤訊息陣列.
3 liveuser 4987
				#$result["function"],當前執行的函數名稱.
4988
				#$result["content"],分割好的內容陣列.
4989
				#$result["length"],unicode字串的長度.
4990
				#必填參數:
4991
				#$conf["str"],字串",要分割的字串.
4992
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
4993
				#可省略參數:
4994
				#$conf["length"],整數,分割的長度.
4995
				#$conf["stringProcess::str_split_unicode"]["length"]=(int)$conf["length"];
4996
				#參考資料:
4997
				#http://php.net/manual/en/function.str-split.php
4998
				#備註:
4999
				#無.
5000
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5001
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5002
 
3 liveuser 5003
				#如果執行失敗
5004
				if($str_split_unicode["status"]==="false"){
226 liveuser 5005
 
3 liveuser 5006
					#設置執行失敗
5007
					$result["status"]="false";
226 liveuser 5008
 
3 liveuser 5009
					#設置執行錯誤訊息
5010
					$result["error"]=$str_split_unicode;
226 liveuser 5011
 
3 liveuser 5012
					#回傳結果
5013
					return $result;
226 liveuser 5014
 
5015
					}#if end
5016
 
3 liveuser 5017
				#初始化給search::findKeyWordsPosition的input參數
5018
				$newInputArguForFindKeyWordsPosition="";
226 liveuser 5019
 
3 liveuser 5020
				#初始化給variableCheck::checkStringFormat的input參數
5021
				$newInputArgu="";
226 liveuser 5022
 
3 liveuser 5023
				#針對剩下的每個bytes
5024
				foreach($str_split_unicode["content"] as $index=>$splitedStr){
226 liveuser 5025
 
3 liveuser 5026
					#屬於findKeyWordsPosition的input參數
5027
					if($index<(int)$conf["length"]){
226 liveuser 5028
 
3 liveuser 5029
						#串接新的input參數bytes
5030
						$newInputArguForFindKeyWordsPosition=$newInputArguForFindKeyWordsPosition.$splitedStr;
226 liveuser 5031
 
3 liveuser 5032
						}#if end
226 liveuser 5033
 
3 liveuser 5034
					#反之
5035
					else{
226 liveuser 5036
 
3 liveuser 5037
						#串接新的input參數bytes
5038
						$newInputArgu=$newInputArgu.$splitedStr;
226 liveuser 5039
 
3 liveuser 5040
						}#else end
226 liveuser 5041
 
3 liveuser 5042
					}#foreach end
226 liveuser 5043
 
3 liveuser 5044
				}#if end
226 liveuser 5045
 
3 liveuser 5046
			#反之不存在指定bytes長度
226 liveuser 5047
 
3 liveuser 5048
			#但有指定字位長度
5049
			else if(isset($conf["lengthGrapheme"])){
226 liveuser 5050
 
3 liveuser 5051
				#取得輸入的字位長度
5052
				$grapheme_strlen=grapheme_strlen($conf["input"]);
226 liveuser 5053
 
3 liveuser 5054
				#如果長度不足
5055
				if($grapheme_strlen>(int)$conf["lengthGrapheme"]){
226 liveuser 5056
 
3 liveuser 5057
					#設置執行正常
5058
					$result["status"]="true";
226 liveuser 5059
 
3 liveuser 5060
					#設置檢查不通過
5061
					$result["passed"]="false";
226 liveuser 5062
 
3 liveuser 5063
					#設置詳細結果訊息陣列.
5064
					$result["content"][]="input參數(".$conf["input"].")的字位長度(".$grapheme_strlen.")小於lengthGrapheme參數(".$conf["lengthGrapheme"].")";
226 liveuser 5065
 
3 liveuser 5066
					#回傳結果
5067
					return $result;
226 liveuser 5068
 
3 liveuser 5069
					}#if end
226 liveuser 5070
 
3 liveuser 5071
				#初始化給search::findKeyWordsPosition的input參數
5072
				$arguForFindKeyWordsPosition=grapheme_substr($conf["input"],0,$conf["lengthGrapheme"]);
226 liveuser 5073
 
3 liveuser 5074
				#初始化給variableCheck::checkStringFormat的input參數
5075
				$newInputArgu=grapheme_substr($conf["input"],$conf["lengthGrapheme"]);
226 liveuser 5076
 
3 liveuser 5077
				}#if end
226 liveuser 5078
 
3 liveuser 5079
			#函式說明:
5080
			#取得關鍵字在字串的哪個位置(字首,字尾,中間)
5081
			#回傳結果:
5082
			#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
5083
			#$result["error"],錯誤訊息陣列.
5084
			#$result["function"],當前執行的函數名稱.
5085
			#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
5086
			#$result["argu"],傳入的參數.
5087
			#$result["head"][i],第i個關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
5088
			#$result["tail"][i],第i個關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
5089
			#$result["center"][i],第i個關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
5090
			#$result["indexS"][i],第i個關鍵字在被搜尋字串的哪個位置開始.
5091
			#$result["indexE"][i],第i個關鍵字在被搜尋字串的哪個位置結束.
5092
			#必填參數:
226 liveuser 5093
 
3 liveuser 5094
			#如果存在 newInputArguForFindKeyWordsPosition,就用之.
5095
			if(isset($newInputArguForFindKeyWordsPosition)){
226 liveuser 5096
 
3 liveuser 5097
				#$conf["inputStr"],字串,被搜尋的字串.
5098
				$conf["search::findKeyWordsPosition"]["inputStr"]=$newInputArguForFindKeyWordsPosition;
226 liveuser 5099
 
3 liveuser 5100
				}#if end
226 liveuser 5101
 
3 liveuser 5102
			#反之用原始輸入字串
5103
			else{
226 liveuser 5104
 
3 liveuser 5105
				#$conf["inputStr"],字串,被搜尋的字串.
5106
				$conf["search::findKeyWordsPosition"]["inputStr"]=$conf["input"];
226 liveuser 5107
 
3 liveuser 5108
				}#else end
226 liveuser 5109
 
3 liveuser 5110
			#$conf["keyWords"],字串陣列,要搜尋的多個關鍵字
5111
			$conf["search::findKeyWordsPosition"]["keyWords"]=$keywords;
5112
			#可省略參數:
5113
			#無.
5114
			#參考資料:
5115
			#http://php.net/manual/en/function.strpos.php
5116
			#備註:
5117
			#無.
5118
			$findKeyWordsPosition=search::findKeyWordsPosition($conf["search::findKeyWordsPosition"]);
5119
			unset($conf["search::findKeyWordsPosition"]);
226 liveuser 5120
 
3 liveuser 5121
			#如果執行失敗
5122
			if($findKeyWordsPosition["status"]==="false"){
226 liveuser 5123
 
3 liveuser 5124
				#設置錯誤識別
5125
				$result["status"]="false";
226 liveuser 5126
 
3 liveuser 5127
				#設置錯誤訊息
5128
				$result["error"]=$findKeyWordsPosition;
226 liveuser 5129
 
3 liveuser 5130
				#回傳結果
5131
				return $result;
226 liveuser 5132
 
3 liveuser 5133
				}#if end
226 liveuser 5134
 
3 liveuser 5135
			#如果三個參數 startWith、centerWith、endWith 都在
5136
			if( isset($conf["startWith"]) && isset($conf["centerWith"]) && isset($conf["endWith"]) ){
226 liveuser 5137
 
3 liveuser 5138
				#如果其中一個關鍵字沒找到
5139
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["center"][1]!=="true" || $findKeyWordsPosition["tail"][2]!=="true" ){
226 liveuser 5140
 
3 liveuser 5141
					#設置執行正常
5142
					$result["status"]="true";
226 liveuser 5143
 
3 liveuser 5144
					#設置檢查不通過
5145
					$result["passed"]="false";
226 liveuser 5146
 
3 liveuser 5147
					#設置簡易資訊
5148
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、centerWith參數(".$conf["centerWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5149
 
3 liveuser 5150
					#設置詳細資訊
5151
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5152
 
3 liveuser 5153
					#回傳結果
5154
					return $result;
226 liveuser 5155
 
3 liveuser 5156
					}#if end
226 liveuser 5157
 
3 liveuser 5158
				#設置新的input參數
5159
				$result["newInputArgu"]="";
226 liveuser 5160
 
3 liveuser 5161
				}#if end
226 liveuser 5162
 
3 liveuser 5163
			#反之只有 startWith、centerWith 兩個參數
5164
			else if( isset($conf["startWith"]) && isset($conf["centerWith"]) ){
226 liveuser 5165
 
3 liveuser 5166
				#如果其中一個關鍵字沒找到
5167
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["center"][1]!=="true" ){
226 liveuser 5168
 
3 liveuser 5169
					#設置執行正常
5170
					$result["status"]="true";
226 liveuser 5171
 
3 liveuser 5172
					#設置檢查不通過
5173
					$result["passed"]="false";
226 liveuser 5174
 
3 liveuser 5175
					#設置簡易資訊
5176
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、centerWith參數(".$conf["centerWith"].")的條件";
226 liveuser 5177
 
3 liveuser 5178
					#設置詳細資訊
5179
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5180
 
3 liveuser 5181
					#回傳結果
5182
					return $result;
226 liveuser 5183
 
3 liveuser 5184
					}#if end
226 liveuser 5185
 
3 liveuser 5186
				#函式說明:
5187
				#unicode的字串分割,比str_split的支援度高.
5188
				#回傳結果:
5189
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5190
				#$result["error"],錯誤訊息陣列.
3 liveuser 5191
				#$result["function"],當前執行的函數名稱.
5192
				#$result["content"],分割好的內容陣列.
5193
				#$result["length"],unicode字串的長度.
5194
				#必填參數:
5195
				#$conf["str"],字串",要分割的字串.
5196
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5197
				#可省略參數:
5198
				#$conf["length"],整數,分割的長度.
5199
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][1];
5200
				#參考資料:
5201
				#http://php.net/manual/en/function.str-split.php
5202
				#備註:
5203
				#無.
5204
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5205
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5206
 
3 liveuser 5207
				#如果執行失敗
5208
				if($str_split_unicode["status"]==="false"){
226 liveuser 5209
 
3 liveuser 5210
					#設置執行失敗
5211
					$result["status"]="false";
226 liveuser 5212
 
3 liveuser 5213
					#設置執行錯誤訊息
5214
					$result["error"]=$str_split_unicode;
226 liveuser 5215
 
3 liveuser 5216
					#回傳結果
5217
					return $result;
226 liveuser 5218
 
5219
					}#if end
5220
 
3 liveuser 5221
				#針對剩下的每個bytes
5222
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5223
 
3 liveuser 5224
					#串接新的input參數bytes
5225
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5226
 
3 liveuser 5227
					}#foreach end
226 liveuser 5228
 
3 liveuser 5229
				}#if end
226 liveuser 5230
 
3 liveuser 5231
			#反之只有 startWith、endWith 兩個參數
5232
			else if( isset($conf["startWith"]) && isset($conf["endWith"]) ){
226 liveuser 5233
 
3 liveuser 5234
				#如果其中一個關鍵字沒找到
5235
				if( $findKeyWordsPosition["head"][0]!=="true" || $findKeyWordsPosition["tail"][1]!=="true" ){
226 liveuser 5236
 
3 liveuser 5237
					#設置執行正常
5238
					$result["status"]="true";
226 liveuser 5239
 
3 liveuser 5240
					#設置檢查不通過
5241
					$result["passed"]="false";
226 liveuser 5242
 
3 liveuser 5243
					#設置簡易資訊
5244
					$result["content"][]="input參數(".$conf["input"].")不完全符合startWith參數(".$conf["startWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5245
 
3 liveuser 5246
					#設置詳細資訊
5247
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5248
 
3 liveuser 5249
					#回傳結果
5250
					return $result;
226 liveuser 5251
 
3 liveuser 5252
					}#if end
226 liveuser 5253
 
3 liveuser 5254
				#設置新的input參數
5255
				$result["newInputArgu"]="";
226 liveuser 5256
 
3 liveuser 5257
				}#if end
226 liveuser 5258
 
3 liveuser 5259
			#反之只有 centerWith、endWith 兩個參數
5260
			else if( isset($conf["centerWith"]) && isset($conf["endWith"]) ){
5261
 
5262
				#如果其中一個關鍵字沒找到
5263
				if( $findKeyWordsPosition["center"][0]!=="true" || $findKeyWordsPosition["tail"][1]!=="true" ){
226 liveuser 5264
 
3 liveuser 5265
					#設置執行正常
5266
					$result["status"]="true";
226 liveuser 5267
 
3 liveuser 5268
					#設置檢查不通過
5269
					$result["passed"]="false";
226 liveuser 5270
 
3 liveuser 5271
					#設置簡易資訊
5272
					$result["content"][]="input參數(".$conf["input"].")不完全符合centerWith參數(".$conf["centerWith"].")、endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5273
 
3 liveuser 5274
					#設置詳細資訊
5275
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5276
 
3 liveuser 5277
					#回傳結果
5278
					return $result;
226 liveuser 5279
 
3 liveuser 5280
					}#if end
226 liveuser 5281
 
3 liveuser 5282
				#設置新的input參數
5283
				$result["newInputArgu"]="";
5284
 
5285
				}#if end
226 liveuser 5286
 
3 liveuser 5287
			#反之只有 startWith 參數
5288
			else if(isset($conf["startWith"])){
226 liveuser 5289
 
3 liveuser 5290
				#如果其中一個關鍵字沒找到
5291
				if( $findKeyWordsPosition["head"][0]!=="true" ){
226 liveuser 5292
 
3 liveuser 5293
					#設置執行正常
5294
					$result["status"]="true";
226 liveuser 5295
 
3 liveuser 5296
					#設置檢查不通過
5297
					$result["passed"]="false";
226 liveuser 5298
 
3 liveuser 5299
					#設置簡易資訊
5300
					$result["content"][]="input參數(".$conf["input"].")不符合startWith參數(".$conf["startWith"].")的條件";
226 liveuser 5301
 
3 liveuser 5302
					#設置詳細資訊
5303
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5304
 
3 liveuser 5305
					#回傳結果
5306
					return $result;
226 liveuser 5307
 
3 liveuser 5308
					}#if end
226 liveuser 5309
 
3 liveuser 5310
				#函式說明:
5311
				#unicode的字串分割,比str_split的支援度高.
5312
				#回傳結果:
5313
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5314
				#$result["error"],錯誤訊息陣列.
3 liveuser 5315
				#$result["function"],當前執行的函數名稱.
5316
				#$result["content"],分割好的內容陣列.
5317
				#$result["length"],unicode字串的長度.
5318
				#必填參數:
5319
				#$conf["str"],字串",要分割的字串.
5320
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5321
				#可省略參數:
5322
				#$conf["length"],整數,分割的長度.
5323
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][0];
5324
				#參考資料:
5325
				#http://php.net/manual/en/function.str-split.php
5326
				#備註:
5327
				#無.
5328
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5329
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5330
 
3 liveuser 5331
				#如果執行失敗
5332
				if($str_split_unicode["status"]==="false"){
226 liveuser 5333
 
3 liveuser 5334
					#設置執行失敗
5335
					$result["status"]="false";
226 liveuser 5336
 
3 liveuser 5337
					#設置執行錯誤訊息
5338
					$result["error"]=$str_split_unicode;
226 liveuser 5339
 
3 liveuser 5340
					#回傳結果
5341
					return $result;
226 liveuser 5342
 
5343
					}#if end
5344
 
3 liveuser 5345
				#針對剩下的每個bytes
5346
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5347
 
3 liveuser 5348
					#串接新的input參數bytes
5349
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5350
 
3 liveuser 5351
					}#foreach end
226 liveuser 5352
 
3 liveuser 5353
				}#if end
226 liveuser 5354
 
3 liveuser 5355
			#反之只有 centerWith 參數
5356
			else if(isset($conf["centerWith"])){
226 liveuser 5357
 
3 liveuser 5358
				#如果其中一個關鍵字沒找到
5359
				if( $findKeyWordsPosition["center"][0]!=="true" ){
226 liveuser 5360
 
3 liveuser 5361
					#設置執行正常
5362
					$result["status"]="true";
226 liveuser 5363
 
3 liveuser 5364
					#設置檢查不通過
5365
					$result["passed"]="false";
226 liveuser 5366
 
3 liveuser 5367
					#設置簡易資訊
5368
					$result["content"][]="input參數(".$conf["input"].")不符合centertWith參數(".$conf["centertWith"].")的條件";
226 liveuser 5369
 
3 liveuser 5370
					#設置詳細資訊
5371
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5372
 
3 liveuser 5373
					#回傳結果
5374
					return $result;
226 liveuser 5375
 
3 liveuser 5376
					}#if end
226 liveuser 5377
 
3 liveuser 5378
				#函式說明:
5379
				#unicode的字串分割,比str_split的支援度高.
5380
				#回傳結果:
5381
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5382
				#$result["error"],錯誤訊息陣列.
3 liveuser 5383
				#$result["function"],當前執行的函數名稱.
5384
				#$result["content"],分割好的內容陣列.
5385
				#$result["length"],unicode字串的長度.
5386
				#必填參數:
5387
				#$conf["str"],字串",要分割的字串.
5388
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5389
				#可省略參數:
5390
				#$conf["length"],整數,分割的長度.
5391
				$conf["stringProcess::str_split_unicode"]["length"]=$findKeyWordsPosition["indexE"][0];
5392
				#參考資料:
5393
				#http://php.net/manual/en/function.str-split.php
5394
				#備註:
5395
				#無.
5396
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5397
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5398
 
3 liveuser 5399
				#如果執行失敗
5400
				if($str_split_unicode["status"]==="false"){
226 liveuser 5401
 
3 liveuser 5402
					#設置執行失敗
5403
					$result["status"]="false";
226 liveuser 5404
 
3 liveuser 5405
					#設置執行錯誤訊息
5406
					$result["error"]=$str_split_unicode;
226 liveuser 5407
 
3 liveuser 5408
					#回傳結果
5409
					return $result;
226 liveuser 5410
 
5411
					}#if end
5412
 
3 liveuser 5413
				#針對剩下的每個bytes
5414
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5415
 
3 liveuser 5416
					#串接新的input參數bytes
5417
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5418
 
3 liveuser 5419
					}#foreach end
226 liveuser 5420
 
3 liveuser 5421
				}#if end
226 liveuser 5422
 
3 liveuser 5423
			#反之只有 endWith 參數
5424
			else if(isset($conf["endWith"])){
226 liveuser 5425
 
3 liveuser 5426
				#如果其中一個關鍵字沒找到
5427
				if( $findKeyWordsPosition["tail"][0]!=="true" ){
226 liveuser 5428
 
3 liveuser 5429
					#設置執行正常
5430
					$result["status"]="true";
226 liveuser 5431
 
3 liveuser 5432
					#設置檢查不通過
5433
					$result["passed"]="false";
226 liveuser 5434
 
3 liveuser 5435
					#設置簡易資訊
5436
					$result["content"][]="input參數(".$conf["input"].")不符合endWith參數(".$conf["endWith"].")的條件";
226 liveuser 5437
 
3 liveuser 5438
					#設置詳細資訊
5439
					$result["content"][]=$findKeyWordsPosition;
226 liveuser 5440
 
3 liveuser 5441
					#回傳結果
5442
					return $result;
226 liveuser 5443
 
3 liveuser 5444
					}#if end
226 liveuser 5445
 
3 liveuser 5446
				#設置新的input參數
5447
				$result["newInputArgu"]="";
226 liveuser 5448
 
3 liveuser 5449
				}#if end
226 liveuser 5450
 
3 liveuser 5451
			#反之不可能發生的地方
5452
			else{
226 liveuser 5453
 
3 liveuser 5454
				#設置錯誤識別
5455
				$result["status"]="false";
226 liveuser 5456
 
3 liveuser 5457
				#設置錯誤訊息
5458
				$result["error"][]="非預期的錯誤";
226 liveuser 5459
 
3 liveuser 5460
				#設置錯誤訊息
5461
				$result["error"][]=$findKeyWordsPosition;
226 liveuser 5462
 
3 liveuser 5463
				#回傳結果
5464
				return $result;
226 liveuser 5465
 
3 liveuser 5466
				}#else end
226 liveuser 5467
 
3 liveuser 5468
			#如果存在
5469
			if(isset($newInputArgu)){
226 liveuser 5470
 
3 liveuser 5471
				#更新之
5472
				$result["newInputArgu"]=$newInputArgu;
226 liveuser 5473
 
3 liveuser 5474
				}#if end
226 liveuser 5475
 
3 liveuser 5476
			}#if end
226 liveuser 5477
 
3 liveuser 5478
		#反之,沒有關鍵字
5479
		else{
226 liveuser 5480
 
3 liveuser 5481
			#若有指定bytes長度
5482
			if(isset($conf["length"])){
226 liveuser 5483
 
3 liveuser 5484
				#取得輸入的字位長度
5485
				$length=length($conf["input"]);
226 liveuser 5486
 
3 liveuser 5487
				#如果不相等
5488
				if($length!==(int)$conf["length"]){
226 liveuser 5489
 
3 liveuser 5490
					#設置執行正常
5491
					$result["status"]="true";
226 liveuser 5492
 
3 liveuser 5493
					#設置檢查不通過
5494
					$result["passed"]="false";
226 liveuser 5495
 
3 liveuser 5496
					#設置詳細結果訊息陣列.
5497
					$result["content"][]="input參數(".$conf["input"].")的bytes長度(".$length.")與length參數(".$conf["length"].")不相等";
226 liveuser 5498
 
3 liveuser 5499
					#回傳結果
5500
					return $result;
226 liveuser 5501
 
3 liveuser 5502
					}#if end
226 liveuser 5503
 
3 liveuser 5504
				#函式說明:
5505
				#unicode的字串分割,比str_split的支援度高.
5506
				#回傳結果:
5507
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
226 liveuser 5508
				#$result["error"],錯誤訊息陣列.
3 liveuser 5509
				#$result["function"],當前執行的函數名稱.
5510
				#$result["content"],分割好的內容陣列.
5511
				#$result["length"],unicode字串的長度.
5512
				#必填參數:
5513
				#$conf["str"],字串",要分割的字串.
5514
				$conf["stringProcess::str_split_unicode"]["str"]=$conf["input"];
5515
				#可省略參數:
5516
				#$conf["length"],整數,分割的長度.
5517
				$conf["stringProcess::str_split_unicode"]["length"]=(int)$conf["input"];
5518
				#參考資料:
5519
				#http://php.net/manual/en/function.str-split.php
5520
				#備註:
5521
				#無.
5522
				$str_split_unicode=stringProcess::str_split_unicode($conf["stringProcess::str_split_unicode"]);
5523
				unset($conf["stringProcess::str_split_unicode"]);
226 liveuser 5524
 
3 liveuser 5525
				#如果執行失敗
5526
				if($str_split_unicode["status"]==="false"){
226 liveuser 5527
 
3 liveuser 5528
					#設置執行失敗
5529
					$result["status"]="false";
226 liveuser 5530
 
3 liveuser 5531
					#設置執行錯誤訊息
5532
					$result["error"]=$str_split_unicode;
226 liveuser 5533
 
3 liveuser 5534
					#回傳結果
5535
					return $result;
226 liveuser 5536
 
5537
					}#if end
5538
 
3 liveuser 5539
				#針對剩下的每個bytes
5540
				foreach($str_split_unicode["content"] as $splitedStr){
226 liveuser 5541
 
3 liveuser 5542
					#串接新的input參數bytes
5543
					$result["newInputArgu"]=$result["newInputArgu"].$splitedStr;
226 liveuser 5544
 
3 liveuser 5545
					}#foreach end
226 liveuser 5546
 
3 liveuser 5547
				}#if end
226 liveuser 5548
 
3 liveuser 5549
			#反之不存在指定bytes長度
226 liveuser 5550
 
3 liveuser 5551
			#但有指定字位長度
5552
			else if(isset($conf["lengthGrapheme"])){
226 liveuser 5553
 
3 liveuser 5554
				#取得輸入的字位長度
5555
				$grapheme_strlen=grapheme_strlen($conf["input"]);
226 liveuser 5556
 
3 liveuser 5557
				#如果不相等
5558
				if($grapheme_strlen!==(int)$conf["lengthGrapheme"]){
226 liveuser 5559
 
3 liveuser 5560
					#設置執行正常
5561
					$result["status"]="true";
226 liveuser 5562
 
3 liveuser 5563
					#設置檢查不通過
5564
					$result["passed"]="false";
226 liveuser 5565
 
3 liveuser 5566
					#設置詳細結果訊息陣列.
5567
					$result["content"][]="input參數(".$conf["input"].")的字位長度(".$grapheme_strlen.")與lengthGrapheme參數(".$conf["lengthGrapheme"].")不相等";
226 liveuser 5568
 
3 liveuser 5569
					#回傳結果
5570
					return $result;
226 liveuser 5571
 
3 liveuser 5572
					}#if end
226 liveuser 5573
 
3 liveuser 5574
				#取得新的input參數
5575
				$result["newInputArgu"]=grapheme_substr($conf["input"],0,$conf["lengthGrapheme"]);
226 liveuser 5576
 
3 liveuser 5577
				}#if end
226 liveuser 5578
 
3 liveuser 5579
			#反之不存在指定字位長度
226 liveuser 5580
 
3 liveuser 5581
			#但有指定 equalWith
5582
			else if(isset($conf["equalWith"])){
226 liveuser 5583
 
3 liveuser 5584
				#如果不相等
5585
				if($conf["input"]!==$conf["equalWith"]){
226 liveuser 5586
 
3 liveuser 5587
					#設置執行正常
5588
					$result["status"]="true";
226 liveuser 5589
 
3 liveuser 5590
					#設置檢查不通過
5591
					$result["passed"]="false";
226 liveuser 5592
 
3 liveuser 5593
					#設置詳細結果訊息陣列.
5594
					$result["content"][]="input參數(".$conf["input"].")與equalWith參數(".$conf["equalWith"].")不相等";
226 liveuser 5595
 
3 liveuser 5596
					#回傳結果
5597
					return $result;
226 liveuser 5598
 
3 liveuser 5599
					}#if end
226 liveuser 5600
 
3 liveuser 5601
				}#if end
226 liveuser 5602
 
3 liveuser 5603
			}#else(沒有關鍵字) end
226 liveuser 5604
 
3 liveuser 5605
		#設置執行正常
5606
		$result["status"]="true";
226 liveuser 5607
 
3 liveuser 5608
		#設置檢查通過
5609
		$result["passed"]="true";
226 liveuser 5610
 
3 liveuser 5611
		#回傳結果
5612
		return $result;
226 liveuser 5613
 
3 liveuser 5614
		}#checkStringFormat end
5615
 
5616
	/*
5617
	#函式說明:
5618
	#檢查字串是否符合 RFC 3339/ISO-8601 格式
5619
	#回傳結果:
5620
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5621
	#$result["passed"],檢查是否通過,"true"代表通過,"false"代表不通過.
5622
	#$result["argu"],使用的參數.
5623
	#$result["function"],當前執行的函數.
5624
	#$result["error"],涵式錯誤訊息陣列.
5625
	#必填參數:
5626
	#$conf["input"],字串,要檢查格式的字串.
5627
	$conf["input"]="";
5628
	#可省略參數:
5629
	#$conf["UTC"],字串,是否要用當前時區的設定去換算成unixtime,預設為"true",代表要;反之為"false".
5630
	#$conf["UTC"]="true";
5631
	#參考資料:
5632
	#ISO 8601-2:2019=>https://www.rfc-editor.org/info/rfc3339
5633
	#rfc3339=>https://www.rfc-editor.org/rfc/rfc3339
5634
	#備註:
5635
	#無.
5636
	*/
5637
	public static function checkRFC3339(&$conf){
226 liveuser 5638
 
3 liveuser 5639
		#初始化要回傳的結果
5640
		$result=array();
226 liveuser 5641
 
3 liveuser 5642
		#設置當其函數名稱
5643
		$result["function"]=__FUNCTION__;
226 liveuser 5644
 
3 liveuser 5645
		#如果 $conf 不為陣列
5646
		if(gettype($conf)!="array"){
226 liveuser 5647
 
3 liveuser 5648
			#設置執行失敗
5649
			$result["status"]="false";
226 liveuser 5650
 
3 liveuser 5651
			#設置執行錯誤訊息
5652
			$result["error"][]="\$conf變數須為陣列形態";
5653
 
5654
			#如果傳入的參數為 null
5655
			if($conf==null){
226 liveuser 5656
 
3 liveuser 5657
				#設置執行錯誤訊息
5658
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
226 liveuser 5659
 
3 liveuser 5660
				}#if end
5661
 
5662
			#回傳結果
5663
			return $result;
226 liveuser 5664
 
3 liveuser 5665
			}#if end
226 liveuser 5666
 
3 liveuser 5667
		#取得使用的參數
5668
		$result["argu"]=$conf;
226 liveuser 5669
 
3 liveuser 5670
		#檢查參數
5671
		#函式說明:
5672
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5673
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5674
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5675
		#$result["function"],當前執行的函式名稱.
5676
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5677
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5678
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5679
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
5680
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5681
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5682
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5683
		#必填寫的參數:
5684
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5685
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5686
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5687
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
226 liveuser 5688
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double");
3 liveuser 5689
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
5690
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5691
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5692
		#可以省略的參數:
5693
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或集合.
5694
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("UTC");
5695
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
5696
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5697
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5698
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("UTC");
226 liveuser 5699
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3 liveuser 5700
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
5701
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5702
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("true");
5703
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5704
		#$conf["arrayCountEqualCheck"][]=array();
5705
		#參考資料來源:
5706
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5707
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5708
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 5709
 
3 liveuser 5710
		#如果檢查失敗
5711
		if($checkResult["status"]==="false"){
226 liveuser 5712
 
3 liveuser 5713
			#設置執行失敗的訊息
5714
			$result["status"]="false";
226 liveuser 5715
 
3 liveuser 5716
			#設置錯誤訊息
5717
			$result["error"]=$checkResult;
226 liveuser 5718
 
3 liveuser 5719
			#回傳結果
5720
			return $result;
226 liveuser 5721
 
3 liveuser 5722
			}#if end
226 liveuser 5723
 
3 liveuser 5724
		#如果檢查不通過
5725
		if($checkResult["passed"]==="false"){
226 liveuser 5726
 
3 liveuser 5727
			#設置執行失敗的訊息
5728
			$result["status"]="false";
226 liveuser 5729
 
3 liveuser 5730
			#設置錯誤訊息
5731
			$result["error"]=$checkResult;
226 liveuser 5732
 
3 liveuser 5733
			#回傳結果
5734
			return $result;
226 liveuser 5735
 
3 liveuser 5736
			}#if end
226 liveuser 5737
 
3 liveuser 5738
		#函式說明:
5739
		#計算時間點距離1970/01/01多少秒,亦即unixtime.
5740
		#回傳結果:
5741
		#$result["stauts"],執行是否成功,"true"代表執行成功;"false"代表執行失敗.
5742
		#$result["error"],錯誤訊息陣列.
5743
		#$result["content"],時間點距離1970/01/01的多少秒.
5744
		#$result["oriDateAndTime"],原始輸入的內容,若replace0參數為"true",才會有該回傳內容.
5745
		#必填參數:
5746
		#$conf["dateAndTime"],字串,格式爲 2011-05-27 23:59:59.
5747
		$conf["time::caculateTimeAmount"]["dateAndTime"]=$conf["input"];
5748
		#可省略參數:
5749
		#$conf["UTC"],字串,是否要用當前時區的設定去換算成unixtime,預設為"false",代表不要;反之為"true".
5750
		$conf["time::caculateTimeAmount"]["UTC"]=$conf["UTC"];
5751
		#$conf["replace0"],字串,是否要將連續為0的內容替換成當下時間,預設為"true"代表要;反之為"false".
5752
		$conf["time::caculateTimeAmount"]["replace0"]="false";
5753
		#參考資料:
5754
		#無.
5755
		#備註:
5756
		#無.
5757
		$caculateTimeAmount=time::caculateTimeAmount($conf["time::caculateTimeAmount"]);
5758
		unset($conf["time::caculateTimeAmount"]);
226 liveuser 5759
 
3 liveuser 5760
		#如果檢查失敗
5761
		if($caculateTimeAmount["status"]==="false"){
226 liveuser 5762
 
3 liveuser 5763
			#設置執行正常的識別
5764
			$result["status"]="true";
226 liveuser 5765
 
3 liveuser 5766
			#設置檢查不通過
5767
			$result["passed"]="false";
226 liveuser 5768
 
3 liveuser 5769
			#設置回饋的訊息
5770
			$result["content"]=$caculateTimeAmount;
226 liveuser 5771
 
3 liveuser 5772
			#回傳結果
5773
			return $result;
226 liveuser 5774
 
3 liveuser 5775
			}#if end
226 liveuser 5776
 
3 liveuser 5777
		#設置執行正常的識別
5778
		$result["status"]="true";
226 liveuser 5779
 
3 liveuser 5780
		#設置檢查通過
5781
		$result["passed"]="true";
226 liveuser 5782
 
3 liveuser 5783
		#回傳結果
5784
		return $result;
226 liveuser 5785
 
3 liveuser 5786
		}#function checkRFC3339 end
5787
 
5788
	/*
5789
	#函式說明:
5790
	#處理各種錯誤與例外.
5791
	#回傳結果:
5792
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5793
	#$result["argu"],使用的參數.
5794
	#$result["function"],當前執行的函數.
5795
	#$result["error"],涵式錯誤訊息陣列.
5796
	#必填參數:
5797
	#無.
5798
	#可省略參數:
5799
	#$conf["allowCodition"],陣列,滿足什麼條件的錯誤跟例外要繼續執行而不中斷.
5800
	#$conf["allowCodition"]=array();
5801
	#$conf["debug"],字串,"true"代表遇到不允許繼續執行的例外時要輸出debug資訊;預設為"false";
5802
	#$conf["debug"]="false";
5803
	#$conf["format"],字串,遇到不允許的錯誤時,要用什麼格式呈現,預設為"html",其他選擇有"cmd".
5804
	#$conf["format"]="html";
5805
	#參考資料:
5806
	#無.
5807
	#備註:
5808
	#由於是使用 set_exception_handler 因此程式會結束執行.
5809
	*/
5810
	public static function setErrorHandler(&$conf=array()){
226 liveuser 5811
 
3 liveuser 5812
		#初始化要回傳的結果
5813
		$result=array();
5814
 
5815
		#取得當前執行的函數名稱
5816
		$result["function"]=__FUNCTION__;
226 liveuser 5817
 
3 liveuser 5818
		#取得參數
5819
		$result["argu"]=$conf;
5820
 
5821
		#如果 $conf 不為陣列
5822
		if(gettype($conf)!="array"){
5823
 
5824
			#設置執行失敗
5825
			$result["status"]="false";
5826
 
5827
			#設置執行錯誤訊息
5828
			$result["error"][]="\$conf變數須為陣列形態";
5829
 
5830
			#如果傳入的參數為 null
5831
			if(is_null($conf)){
5832
 
5833
				#設置執行錯誤訊息
5834
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5835
 
5836
				}#if end
5837
 
5838
			#回傳結果
5839
			return $result;
5840
 
5841
			}#if end
226 liveuser 5842
 
3 liveuser 5843
		#檢查參數
5844
		#函式說明:
5845
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5846
		#回傳結果:
5847
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5848
		#$result["error"],執行不正常結束的錯訊息陣列.
5849
		#$result["simpleError"],簡單表示的錯誤訊息.
5850
		#$result["function"],當前執行的函式名稱.
5851
		#$result["argu"],設置給予的參數.
5852
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5853
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5854
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5855
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5856
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5857
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5858
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5859
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5860
		#必填參數:
5861
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5862
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5863
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5864
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5865
		#可省略參數:
5866
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5867
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("stream","data");
5868
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
5869
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("resource","array");
5870
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5871
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5872
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5873
		#$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("stream");
5874
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5875
		#$conf["canBeEmpty"]=array();
5876
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5877
		#$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("msgEndType","autoClose");
5878
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5879
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("allowCodition","debug","format");
5880
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5881
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","string","string");
5882
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5883
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,"false","html");
5884
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5885
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5886
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5887
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5888
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5889
		#$conf["disallowAllSkipableVarNotExist"]="";
5890
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5891
		#$conf["arrayCountEqualCheck"][]=array();
5892
		#參考資料:
5893
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5894
		#備註:
5895
		#無.
5896
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5897
		unset($conf["variableCheck::checkArguments"]);
226 liveuser 5898
 
3 liveuser 5899
		#如果執行失敗
5900
		if($checkArguments["status"]==="false"){
226 liveuser 5901
 
3 liveuser 5902
			#設置執行失敗
5903
			$result["status"]="false";
226 liveuser 5904
 
3 liveuser 5905
			#設置錯誤資訊
5906
			$result["error"]=$checkArguments;
226 liveuser 5907
 
3 liveuser 5908
			#回傳結果
5909
			return $result;
226 liveuser 5910
 
3 liveuser 5911
			}#if end
226 liveuser 5912
 
3 liveuser 5913
		#如果檢查不通過
5914
		if($checkArguments["passed"]==="false"){
226 liveuser 5915
 
3 liveuser 5916
			#設置執行失敗
5917
			$result["status"]="false";
226 liveuser 5918
 
3 liveuser 5919
			#設置錯誤資訊
5920
			$result["error"]=$checkArguments;
226 liveuser 5921
 
3 liveuser 5922
			#回傳結果
5923
			return $result;
226 liveuser 5924
 
3 liveuser 5925
			}#if end
226 liveuser 5926
 
3 liveuser 5927
		#設置給本函式使用的 conf
5928
		self::$setErrorHandlerConf=$conf;
226 liveuser 5929
 
3 liveuser 5930
		#處理會導致程式無法執行的錯誤
5931
		set_error_handler(function($errno, $errstr, $errfile, $errline){
5932
			throw new \ErrorException($errstr, $errno, 0, $errfile, $errline);
5933
			});
5934
 
5935
		#處理非導致程式無法執行的錯誤
5936
		#參考資料:
5937
		#http://php.net/manual/en/class.exception.php
5938
		set_exception_handler(function($exception){
226 liveuser 5939
 
3 liveuser 5940
			#debug
5941
			#var_dump($exception);return true;
226 liveuser 5942
 
3 liveuser 5943
			#無窮迴圈
5944
			while(true){
226 liveuser 5945
 
3 liveuser 5946
				#取得給本函式使用的 conf
5947
				$conf=\qbpwcf\variableCheck::$setErrorHandlerConf;
226 liveuser 5948
 
3 liveuser 5949
				#debug
5950
				#var_dump(__LINE__,$conf);
226 liveuser 5951
 
3 liveuser 5952
				#初始化儲存錯誤訊息
5953
				$info=array();
226 liveuser 5954
 
3 liveuser 5955
				#取得描述
5956
				$info["msg"]="Uncaught exception: ".$exception->getMessage();
226 liveuser 5957
 
3 liveuser 5958
				#取得出錯檔案
5959
				$info["file"]="File: ".$exception->getFile();
226 liveuser 5960
 
3 liveuser 5961
				#取得出錯行數
5962
				$info["line"]="Line: ".$exception->getLine();
226 liveuser 5963
 
3 liveuser 5964
				#取得錯誤代碼
5965
				$info["code"]="The exception code is: ".$exception->getCode();
226 liveuser 5966
 
3 liveuser 5967
				#函式說明:
5968
				#檢查多個字串中的每個字串是否有多個關鍵字
5969
				#回傳結果:
5970
				#$result["status"],整體來說,執行是否成功,"true"代表執行成功,"false"代表執行失敗。
5971
				#$result["function"],當前執行的函數名稱.
5972
				#$result["error"],錯誤訊息.
5973
				#$result["argu"],使用的參數.
5974
				#$result["foundedTrueKey"],結果為"true"的被搜尋元素key陣列,與其數值內容.
5975
				#$result["foundedKeyWords"],找到的關鍵字陣列.
5976
				#$result["foundedFalseKey"],結果為"false"的被搜尋元素key陣列,與其數值內容.
5977
				#$result["foundedTrueKeyWords"],二維陣列,各個字串有找到的關鍵字陣列.
5978
				#$result["foundedAll"],是否每個關鍵字都有找到,"true"代表每個都有找到,"false"代表沒有每個都找到.
5979
				#必填參數:
5980
				#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
5981
				$conf["search::findManyKeyWordsFromManyString"]["keyWords"]=$conf["allowCodition"];
5982
				#$conf["stringArray"],字串陣列,要被搜尋的字串內容陣列.
5983
				$conf["search::findManyKeyWordsFromManyString"]["stringArray"]=$info;
5984
				#可省略參數:
5985
				#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為"false"不需要完全符合.
5986
				#$conf["completeEqual"]="true";
5987
				#參考資料:
5988
				#無.
5989
				#備註:
5990
				#無.
5991
				$findManyKeyWordsFromManyString=search::findManyKeyWordsFromManyString($conf["search::findManyKeyWordsFromManyString"]);
5992
				unset($conf["search::findManyKeyWordsFromManyString"]);
226 liveuser 5993
 
3 liveuser 5994
				#如果執行失敗
5995
				if($findManyKeyWordsFromManyString["status"]==="false"){
226 liveuser 5996
 
3 liveuser 5997
					#設置執行失敗
5998
					$result["status"]="false";
226 liveuser 5999
 
3 liveuser 6000
					#設置錯誤資訊
6001
					$result["error"]=$findManyKeyWordsFromManyString;
226 liveuser 6002
 
3 liveuser 6003
					#debug
6004
					var_dump(__LINE__,$result);
226 liveuser 6005
 
3 liveuser 6006
					#結束執行,回傳代碼1給shell
6007
					exit(1);
226 liveuser 6008
 
3 liveuser 6009
					}#if end
6010
 
6011
				#如果有符合可以繼續執行的條件
6012
				if(count($findManyKeyWordsFromManyString["foundedTrueKey"])>0){
226 liveuser 6013
 
3 liveuser 6014
					#debug
6015
					var_dump(__LINE__,$findManyKeyWordsFromManyString);
226 liveuser 6016
 
3 liveuser 6017
					#結束while
6018
					break;
226 liveuser 6019
 
3 liveuser 6020
					}#if end
226 liveuser 6021
 
3 liveuser 6022
				#如果有要debug
6023
				if($conf["debug"]==="true"){
226 liveuser 6024
 
3 liveuser 6025
					#判斷要呈現的方式
6026
					switch($conf["format"]){
226 liveuser 6027
 
3 liveuser 6028
						#如果是 html
6029
						case "html":
226 liveuser 6030
 
3 liveuser 6031
							#呈現錯誤訊息
6032
							echo "<p>".PHP_EOL;
6033
							echo "Uncaught exception: ".$exception->getMessage()."<br>".PHP_EOL;
6034
							echo "File: ".$exception->getFile()."<br>".PHP_EOL;
6035
							echo "Line: ".$exception->getLine()."<br>".PHP_EOL;
6036
							echo "Trace: ".print_r($exception->getTrace(),true)."<br>".PHP_EOL;
6037
							echo "The exception code is: ".$exception->getCode()."<br>".PHP_EOL;
226 liveuser 6038
 
3 liveuser 6039
							#跳出 switch
6040
							break;
226 liveuser 6041
 
3 liveuser 6042
						#如果是 cmd
6043
						case "cmd";
226 liveuser 6044
 
3 liveuser 6045
							#呈現錯誤訊息
6046
							echo PHP_EOL;
6047
							echo "Uncaught exception: ".$exception->getMessage().PHP_EOL;
6048
							echo "File: ".$exception->getFile().PHP_EOL;
6049
							echo "Line: ".$exception->getLine().PHP_EOL;
6050
							echo "Trace: ".print_r($exception->getTrace(),true).PHP_EOL;
6051
							echo "The exception code is: ".$exception->getCode().PHP_EOL;
226 liveuser 6052
 
3 liveuser 6053
							#跳出 switch
6054
							break;
226 liveuser 6055
 
3 liveuser 6056
						#其他格式
6057
						default:
226 liveuser 6058
 
3 liveuser 6059
							#用var_dump
6060
							var_dump($info);
226 liveuser 6061
 
3 liveuser 6062
						}#switch end
226 liveuser 6063
 
3 liveuser 6064
					}#if end
226 liveuser 6065
 
3 liveuser 6066
				#debug
6067
				#var_dump(__LINE__,$findManyKeyWordsFromManyString);
226 liveuser 6068
 
3 liveuser 6069
				#結束執行,回傳代碼1給shell
6070
				exit(1);
226 liveuser 6071
 
3 liveuser 6072
				}#while end
226 liveuser 6073
 
3 liveuser 6074
			#debug
6075
			#var_dump(__LINE__,"passed");
226 liveuser 6076
 
3 liveuser 6077
			#視為可以繼續執行
6078
			return true;
226 liveuser 6079
 
3 liveuser 6080
			});
226 liveuser 6081
 
3 liveuser 6082
		}#funciton setErrorHandler end
6083
 
6084
	}#class variableCheck end
6085
 
6086
?>