Subversion Repositories php-qbpwcf

Rev

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