Subversion Repositories php-qbpwcf

Rev

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