Subversion Repositories qbpwcf-lib(archive)

Rev

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

Rev Author Line No. Line
1 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
623 liveuser 6
    Copyright (C) 2015~2024 Min-Jhin,Chen
1 liveuser 7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
243 liveuser 26
/*
27
類別說明:
28
與字串處理相關的類別.
29
備註:
30
無.
31
*/
1 liveuser 32
class stringProcess{
33
 
34
	/*
35
	#函式說明:
36
	#當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
37
	#回傳結果:
38
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
39
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
40
	#$result["function"],當前執行的函式名稱.
41
	#必填參數:
42
	#$method,物件,為物件實體或類別名稱,會自動置入該參數.
43
	#$arguments,陣列,為呼叫方法時所用的參數.
217 liveuser 44
	#可省略參數:
45
	#無.
1 liveuser 46
	#參考資料:
47
	#__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
217 liveuser 48
	#備註:
49
	#無.
1 liveuser 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,陣列,為呼叫方法時所用的參數.
217 liveuser 80
	#可省略參數:
81
	#無.
1 liveuser 82
	#參考資料:
217 liveuser 83
	#__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
84
	#備註:
85
	#無.
1 liveuser 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
	/*
57 liveuser 107
	#函式說明:
1 liveuser 108
	#將含有數個黑點的字串,處理成只剩下含有最後一個黑點的字串,結果會回傳合併後的字串。
109
	#如果字串中沒有黑點則會回傳原始字串
110
	#回傳結果:
111
	#$result["status"],執行正常與否,"true"代表正常;"false"代表不正常
112
	#$result["error"],錯誤訊息陣列
113
	#$result["function"],當前函數名稱
114
	#$result["content"],只剩下最後一個黑點的字串
115
	#必填參數:
116
	#$conf["stringIn"],字串,爲要進行處理的字串
117
	$conf["stringIn"]="";
57 liveuser 118
	#可省略參數:
119
	#無.
217 liveuser 120
	#參考資料:
121
	#無.
57 liveuser 122
	#備註:
123
	#無.
1 liveuser 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
	/*
57 liveuser 278
	#函式說明:
1 liveuser 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"],被丟棄的元素.
57 liveuser 286
	#必填參數:
1 liveuser 287
	#$conf["stringIn"],字串,要處理的字串。
288
	$conf["stringIn"]="";
289
	#可省略參數:
290
	#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割,預設為",".
217 liveuser 291
	#$conf["spiltSymbol"]="";
1 liveuser 292
	#$conf["unshift"],字串,是否要改成丟棄最後一個元素,預設為"false";反之為"true".
217 liveuser 293
	#$conf["unshift"]="false";
294
	#參考資料:
295
	#無.
57 liveuser 296
	#備註:
297
	#無.
1 liveuser 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"變成陣列.
57 liveuser 369
		#回傳結果:
1 liveuser 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;".
57 liveuser 419
		#回傳結果:
1 liveuser 420
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
421
		#$result["function"],當前執行的function名稱
422
		#$result["error"],錯誤訊息陣列.
423
		#$result["content"],處理好的字串.
424
		#$result["argu"],使用的參數.
57 liveuser 425
		#必填參數:
1 liveuser 426
		#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
427
		$conf["arrays::arrayToString"]["inputArray"]=$array;
57 liveuser 428
		#可省略參數:
1 liveuser 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
	/*
57 liveuser 462
	#函式說明:
217 liveuser 463
	#將固定格式的字串分開,並回傳分開的結果.
1 liveuser 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"代表沒有找到.
57 liveuser 473
	#必填參數:
1 liveuser 474
	#$conf["stringIn"],字串,要處理的字串.
475
	$conf["stringIn"]="";
476
	#$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
477
	$conf["spiltSymbol"]="";
478
	#可省略參數:
479
	#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
744 liveuser 480
	#$conf["allowEmptyStr"]="false";
217 liveuser 481
	#參考資料:
482
	#無.
57 liveuser 483
	#備註:
484
	#無.
1 liveuser 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
	/*
57 liveuser 709
	#函式說明:
1 liveuser 710
	#將多個固定格式的字串分開,並回傳分開的結果
57 liveuser 711
	#回傳結果:
1 liveuser 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)個字串分割後總共分成幾段
57 liveuser 719
	#必填參數:
1 liveuser 720
	#$conf["stringIn"],字串陣列,要處理的字串陣列.
721
	$conf["stringIn"]=array();
722
	#$conf["spiltSymbol"],字串,爲要以哪個符號作爲分割.
723
	$conf["spiltSymbol"]="";
57 liveuser 724
	#可省略參數:
725
	#無.
217 liveuser 726
	#參考資料:
727
	#無.
57 liveuser 728
	#備註:
729
	#無.
1 liveuser 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"],爲總共分成幾段
57 liveuser 841
			#必填參數:
1 liveuser 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
	/*
57 liveuser 878
	#函式說明:
217 liveuser 879
	#將多行內容的字串,依行切割,切割的依據為"\r\n".
57 liveuser 880
	#回傳結果:
217 liveuser 881
	#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗.
1 liveuser 882
	#$result["error"],錯誤訊息陣列.
217 liveuser 883
	#$result["function"],當前執行的函數名稱.#$result["oriStr"],要分割的原始字串內容.
884
	#$result["oriStr"],要分割的原始字串內容.
885
	#$result["dataArray"],爲以行分割好的字串陣列內容,$result["dataArray"][$i]爲第($i+1)行的內容.
886
	#$result["dataCounts"],爲總共分成幾行.
57 liveuser 887
	#必填參數:
217 liveuser 888
	#$conf["stringIn"],字串,要處理的多行文字字串.
889
	$conf["stringIn"]="";
57 liveuser 890
	#可省略參數:
891
	#無.
217 liveuser 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 換行字元
57 liveuser 894
	#備註:
895
	#無.
1 liveuser 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
		#檢查字串裡面有無指定的關鍵字
57 liveuser 999
		#回傳結果:
1 liveuser 1000
		#$result["status"],"true"代表執行成功,"false"代表執行失敗。
1001
		#$result["error"],錯誤訊息
1002
		#$result["function"],當前執行的函數名稱.
1003
		#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
1004
		#$result["keyWordCount"],找到的關鍵字數量.
57 liveuser 1005
		#必填參數:
1 liveuser 1006
		$conf["search::findKeyWord"]["keyWord"]="\r\n";#想要搜尋的關鍵字
1007
		$conf["search::findKeyWord"]["string"]=$conf["stringIn"];#要被搜尋的字串內容
57 liveuser 1008
		#可省略參數:
1 liveuser 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
 
57 liveuser 1038
		#函式說明:
1 liveuser 1039
		#將固定格式的字串分開,並回傳分開的結果。
1040
		#回傳的參數:
1041
		#$result["oriStr"],要分割的原始字串內容
1042
		#$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
1043
		#$result["dataCounts"],爲總共分成幾段
57 liveuser 1044
		#必填參數:
1 liveuser 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
	/*
57 liveuser 1079
	#函式說明:
1 liveuser 1080
	#將一字串的前幾個文字轉爲ACSII並存到陣列裏面
57 liveuser 1081
	#回傳結果:
1 liveuser 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"]="";
217 liveuser 1093
	#參考資料:
1094
	#無.
57 liveuser 1095
	#備註:
1096
	#無.
1 liveuser 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
	/*
57 liveuser 1221
	#函式說明:
1 liveuser 1222
	#將數字字串轉換成實際的數字
57 liveuser 1223
	#回傳結果:
1 liveuser 1224
	#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
1225
	#$result["error"],錯誤訊息陣列.
1226
	#$result["function"],當前執行的函數名稱.
1227
	#$result["content"],實際的數字.
1228
	#$result["ori"],未轉換的內容.
57 liveuser 1229
	#必填參數:
1 liveuser 1230
	#$conf["stringIn"],字串,要處理度數字字串。
1231
	$conf["stringIn"]="";
57 liveuser 1232
	#可省略參數:
1233
	#無.
1 liveuser 1234
	#參考資料:
1235
	#http://www.phpf1.com/tutorial/php-string-to-int.html
57 liveuser 1236
	#備註:
1237
	#無.
1 liveuser 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
	/*
57 liveuser 1350
	#函式說明:
1 liveuser 1351
	#處理字串避免網頁出錯
57 liveuser 1352
	#回傳結果:
1 liveuser 1353
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1354
	#$result["function"],當前執行的函數.
1355
	#$result["content"],爲處理好的字串.
1356
	#$result["error"],錯誤訊息陣列.
1357
	#$result["argu"],使用的參數. 
57 liveuser 1358
	#必填參數:
217 liveuser 1359
	#$conf["stringIn"],字串,爲要處理的字串
1360
	$conf["stringIn"]="";
57 liveuser 1361
	#可省略參數:
217 liveuser 1362
	#$conf["selectedCharacter"],字串陣列,爲被選擇要處理的字串/字元,須爲陣列值。若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
1363
	#$conf["selectedCharacter"]=array("");
1364
	#$conf["changeTo"],字串陣列,爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串).
1365
	#$conf["changeTo"]=array("");
1366
	#參考資料:
1367
	#無.
1 liveuser 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
	/*
57 liveuser 1532
	#函式說明:
1 liveuser 1533
	#處理多個字串避免網頁出錯
57 liveuser 1534
	#回傳結果:
217 liveuser 1535
	#$result["status"],"true"代表執行成功,"false"代表執行失敗.
1 liveuser 1536
	#$result["function"],當前執行的函數.
217 liveuser 1537
	#$result["error"],錯誤訊息.
1538
	#$result["processedStrArray"],處理好的字串陣列.
57 liveuser 1539
	#必填參數:
217 liveuser 1540
	#$conf["stringIn"],字串陣列,爲要處理的字串陣列.
1541
	#$conf["stringIn"]=array("");
57 liveuser 1542
	#可省略參數:
217 liveuser 1543
	#$conf["selectedCharacter"],字串陣列,爲被選擇要處理的字串/字元,須爲陣列值。若不設定則預設爲要將這些字串作替換 ("<",">","=","//","'","$","%","&","|","/*","*","#","\"").特殊字元,「\n」代表換行,「\t」代表tab鍵的間隔
1544
	#$conf["selectedCharacter"]=array("");	
1545
	#$conf["changeTo"],字串陣列,爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串).
1546
	#$conf["changeTo"]=array();
1547
	#參考資料:
1548
	#無.
57 liveuser 1549
	#備註:
1550
	#無.
1 liveuser 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
			#如果該行為 ""
640 liveuser 1648
			if($unProcessedStrValue===""){
1 liveuser 1649
 
1650
				#不處理直接儲存成 ""
1651
				$result["processedStrArray"][$unProcessedStrKey]="";
1652
 
1653
				#跳過該回合
1654
				continue;
1655
 
1656
				}#if end
1657
 
57 liveuser 1658
			#函式說明:
1 liveuser 1659
			#處理字串避免網頁出錯
57 liveuser 1660
			#回傳結果:
1 liveuser 1661
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
1662
			#$result["content"],爲處理好的字串。
1663
			#$result["error"],錯誤訊息陣列
57 liveuser 1664
			#必填參數:
1 liveuser 1665
			$conf["variableCheck.correctCharacter"]["stringIn"]=$unProcessedStrValue;#爲要處理的字串
57 liveuser 1666
			#可省略參數:
1 liveuser 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
	#將檔案目錄的絕對位置中的 "../" 剔除變成直觀的路徑.
57 liveuser 1717
	#回傳結果:
1 liveuser 1718
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
1719
	#$result["function"],當前執行的函數.
1720
	#$result["error"],錯誤訊息陣列.
1721
	#$result["argu"],使用者參數.
1722
	#$result["changedPath"],處理完後回傳的目錄字串.
1723
	#$result["oriPath"],原始的路徑字串
57 liveuser 1724
	#必填參數:
1 liveuser 1725
	#$conf["dirStr"],字串,要處理的檔案目錄字串.
1726
	$conf["dirStr"]="";
57 liveuser 1727
	#可省略參數:
1728
	#無.
217 liveuser 1729
	#參考資料:
1730
	#無.
1 liveuser 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
		#用 / 進行分割
57 liveuser 1843
		#函式說明:
1 liveuser 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"],爲總共分成幾段
57 liveuser 1852
		#必填參數:
1 liveuser 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
 
57 liveuser 1884
						#函式說明:
1 liveuser 1885
						#將陣列中特定元素剔除,並重新按照順序排序
57 liveuser 1886
						#回傳結果:
1 liveuser 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來儲存.
57 liveuser 1893
						#必填參數:
1 liveuser 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"] 是否為 「/」 開頭
57 liveuser 1952
		#函式說明:
1 liveuser 1953
		#取得符合特定字首與字尾的字串
57 liveuser 1954
		#回傳結果:
1 liveuser 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"] 是否有 「/」 結尾
57 liveuser 2002
				#函式說明:
1 liveuser 2003
				#取得符合特定字首與字尾的字串
57 liveuser 2004
				#回傳結果:
1 liveuser 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
827 liveuser 2052
 
1 liveuser 2053
				}#if end
2054
 
2055
			#反之	
2056
			else{
2057
 
2058
				#串接直觀的路徑與結尾加上「/」
2059
				$result["changedPath"]=$result["changedPath"].$tempDirStrArray[$i]."/";
835 liveuser 2060
 
1 liveuser 2061
				}#else end
2062
 
2063
			}#for end
835 liveuser 2064
 
1 liveuser 2065
		#設置執行成功的識別
2066
		$result["status"]="true";
2067
 
2068
		#回傳結果
2069
		return $result;
2070
 
2071
		}#function changeDirByDotDotSolidus end
2072
 
2073
	/*
2074
	#函式說明:
2075
	#將陣列裡的元素內容用特定符號連接在一起變成字串. 
57 liveuser 2076
	#回傳結果:
1 liveuser 2077
	#$result["status"],執行是否成功,"true"代表執行成功,"false"代表執行失敗.
2078
	#$result["function"],當前執行的函數.
2079
	#$result["error"],錯誤訊息陣列.
2080
	#$result["content"],處理過後的字串.
57 liveuser 2081
	#必填參數:
1 liveuser 2082
	#$conf["inputArray"],字串陣列,要處理的陣列.
2083
	$conf["inputArray"]=array();
2084
	#$conf["combineSymbol"],字串,用來連結各元素的符號.
2085
	$conf["combineSymbol"]=",";
57 liveuser 2086
	#可省略參數:
2087
	#無.
217 liveuser 2088
	#參考資料:
2089
	#無.
57 liveuser 2090
	#備註:
2091
	#無.
1 liveuser 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"],當前執行的函數名稱.
663 liveuser 2228
	#$result["content"],分割好的內容陣列.
1 liveuser 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
57 liveuser 2238
	#備註:
2239
	#無.
1 liveuser 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
 
841 liveuser 2352
		}#function str_split_unicode end
1 liveuser 2353
 
2354
	/*
2355
	#函式說明:
2356
	#將字串特定關鍵字與其前面的內容剔除
2357
	#回傳結果:
2358
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2359
	#$result["error"],錯誤訊息陣列.
2360
	#$result["warning"],警告訊息鎮列.
2361
	#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
2362
	#$result["function"],當前執行的函數名稱.
548 liveuser 2363
	#$result["argu"],使用的參數.
1 liveuser 2364
	#$result["oriStr"],要處理的原始字串內容.
841 liveuser 2365
	#$result["content"],處理好的的字串內容.
2366
	#$result["deleted"],被移除的內容.
57 liveuser 2367
	#必填參數:
1 liveuser 2368
	#$conf["stringIn"],字串,要處理的字串.
2369
	$conf["stringIn"]="";
2370
	#$conf["keyWord"],字串,特定字串.
2371
	$conf["keyWord"]="";
57 liveuser 2372
	#可省略參數:
414 liveuser 2373
	#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
2374
	#$conf["recursive"]="true";
705 liveuser 2375
	#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
548 liveuser 2376
	#$conf["lastResult"]=$delStrBeforeKeyWord;
217 liveuser 2377
	#參考資料:
2378
	#無.
57 liveuser 2379
	#備註:
2380
	#無.
1 liveuser 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
 
548 liveuser 2412
		#取得參數
2413
		$result["argu"]=$conf;
2414
 
1 liveuser 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");
548 liveuser 2441
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("recursive","lastResult");
1 liveuser 2442
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
548 liveuser 2443
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","array");
1 liveuser 2444
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
548 liveuser 2445
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false",null);
1 liveuser 2446
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2447
		#$conf["arrayCountEqualCheck"][]=array();
548 liveuser 2448
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2449
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
2450
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2451
		#$conf["variableCheck::checkArguments"]["canNotBeEmpty"]=array("stringIn");
1 liveuser 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
 
548 liveuser 2483
			}#if end
1 liveuser 2484
 
548 liveuser 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
 
1 liveuser 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
 
548 liveuser 2593
			#如果有前次的結果
2594
			if(isset($conf["lastResult"])){
2595
 
2596
				#回傳之
2597
				return $conf["lastResult"];
2598
 
2599
				}#if end
2600
 
1 liveuser 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
 
841 liveuser 2621
		#初始化儲存要移除第幾個字之前的內容(索引從0開始)
1 liveuser 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
					#代表有找到符合條件的關鍵字了
841 liveuser 2640
					$delCount=$i;
1 liveuser 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
 
841 liveuser 2668
			#初始化移除的內容
2669
			$result["deleted"]="";
2670
 
1 liveuser 2671
			#取得剩下的內容
841 liveuser 2672
			for($i=0;$i<$delCount+1;$i++){
2673
 
2674
				#逐字取得字串
2675
				$result["deleted"]=$result["deleted"].$spiltedStringIn[$i];
2676
 
2677
				}#for end
2678
 
2679
			#取得剩下的內容
1 liveuser 2680
			for($i=$delCount+1;$i<count($spiltedStringIn);$i++){
2681
 
2682
				#逐字取得字串
2683
				$result["content"]=$result["content"].$spiltedStringIn[$i];
2684
 
2685
				}#for end
2686
 
548 liveuser 2687
			#設置有找到關鍵字串
1 liveuser 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
 
841 liveuser 2701
			}#else end
2702
 
1 liveuser 2703
		#設置執行正常
2704
		$result["status"]="true";
2705
 
548 liveuser 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
 
1 liveuser 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"],處理好的的字串內容.
841 liveuser 2770
	#$result["deleted"],被移除的內容.
51 liveuser 2771
	#$result["argu"],使用的參數.
57 liveuser 2772
	#必填參數:
51 liveuser 2773
	#$conf["stringIn"],字串,要處理的字串.
2774
	$conf["stringIn"]="";
2775
	#$conf["keyWord"],字串,特定字串.
2776
	$conf["keyWord"]="";
57 liveuser 2777
	#可省略參數:
527 liveuser 2778
	#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
2779
	#$conf["deleteLastRepeatedOne"]="";
217 liveuser 2780
	#參考資料:
2781
	#無.
57 liveuser 2782
	#備註:
2783
	#無.
1 liveuser 2784
	*/
2785
	public static function delStrAfterKeyWord(&$conf){
2786
 
2787
		#初始化要回傳的內容
2788
		$result=array();
2789
 
2790
		#取得當前執行的函數名稱
2791
		$result["function"]=__FUNCTION__;
2792
 
2793
		#如果 $conf 不為陣列
51 liveuser 2794
		if(gettype($conf)!=="array"){
1 liveuser 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");
527 liveuser 2841
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("deleteLastRepeatedOne");
1 liveuser 2842
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
527 liveuser 2843
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
1 liveuser 2844
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
527 liveuser 2845
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
1 liveuser 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
		#如果檢查有誤
51 liveuser 2854
		if($checkResult["status"]==="false"){
1 liveuser 2855
 
2856
			#設置錯誤識別
2857
			$result["status"]="false";
2858
 
2859
			#設置錯誤訊息
2860
			$result["error"]=$checkResult;
2861
 
2862
			#回傳結果
2863
			return $result;
2864
 
2865
			}#if end
2866
 
2867
		#如果檢查不通過
51 liveuser 2868
		if($checkResult["passed"]==="false"){
1 liveuser 2869
 
2870
			#設置錯誤識別
2871
			$result["status"]="false";
2872
 
2873
			#設置錯誤訊息
2874
			$result["error"]=$checkResult;
2875
 
2876
			#回傳結果
2877
			return $result;
2878
 
2879
			}#if end
51 liveuser 2880
 
2881
		#記錄使用的參數
2882
		$result["argu"]=$conf;
527 liveuser 2883
 
548 liveuser 2884
		#倒序內容
2885
		$conf["stringIn"]=strrev($conf["stringIn"]);
527 liveuser 2886
 
548 liveuser 2887
		#倒敘關鍵字
2888
		$conf["keyWord"]=strrev($conf["keyWord"]);
527 liveuser 2889
 
548 liveuser 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
		#可省略參數:
527 liveuser 2906
 
548 liveuser 2907
		#如果不需要移除最後一個符合的關鍵字之後的內容
2908
		if($conf["deleteLastRepeatedOne"]==="false"){
527 liveuser 2909
 
548 liveuser 2910
			#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
2911
			$conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
527 liveuser 2912
 
841 liveuser 2913
			}#if end
527 liveuser 2914
 
548 liveuser 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"){
527 liveuser 2926
 
1 liveuser 2927
			#設置錯誤識別
548 liveuser 2928
			$result["status"]="false";
1 liveuser 2929
 
2930
			#設置錯誤訊息
548 liveuser 2931
			$result["error"]=$delStrBeforeKeyWord;
1 liveuser 2932
 
548 liveuser 2933
			#回傳結果
2934
			return $result;
1 liveuser 2935
 
548 liveuser 2936
			}#if end
2937
 
2938
		#如果沒有關鍵字
2939
		if($delStrBeforeKeyWord["founded"]==="false"){
1 liveuser 2940
 
548 liveuser 2941
			#設置執行正常
2942
			$result["status"]="true";
2943
 
1 liveuser 2944
			#設置沒有找到關鍵字
2945
			$result["founded"]="false";
2946
 
548 liveuser 2947
			#初始化儲存原始的字串
2948
			$result["oriStr"]=strrev($delStrBeforeKeyWord["oriStr"]);
2949
 
841 liveuser 2950
			#取得移除後的結果
548 liveuser 2951
			$result["content"]=strrev($delStrBeforeKeyWord["content"]);
2952
 
1 liveuser 2953
			#回傳結果
2954
			return $result;
2955
 
2956
			}#if end
2957
 
548 liveuser 2958
		#設置執行正常
2959
		$result["status"]="true";
1 liveuser 2960
 
841 liveuser 2961
		#設置有找到關鍵字
548 liveuser 2962
		$result["founded"]="true";
1 liveuser 2963
 
2964
		#初始化儲存原始的字串
548 liveuser 2965
		$result["oriStr"]=strrev($conf["stringIn"]);
1 liveuser 2966
 
841 liveuser 2967
		#取得移除後的結果
548 liveuser 2968
		$result["content"]=strrev($delStrBeforeKeyWord["content"]);
1 liveuser 2969
 
841 liveuser 2970
		#取得被移除的內容
2971
		$result["deleted"]=strrev($delStrBeforeKeyWord["deleted"]);
2972
 
1 liveuser 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"],處理好的的字串內容.
57 liveuser 2986
	#必填參數:
1 liveuser 2987
	#$conf["strIn"],字串陣列,每個要處理的字串.
2988
	$conf["strIn"]=array();		
57 liveuser 2989
	#可省略參數:
2990
	#無.
217 liveuser 2991
	#參考資料:
2992
	#無.
57 liveuser 2993
	#備註:
2994
	#無.
1 liveuser 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
 
57 liveuser 3075
			#函式說明:
1 liveuser 3076
			#取得多個符合特定字首與字尾的字串.
57 liveuser 3077
			#回傳結果:
1 liveuser 3078
			#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
3079
			#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
3080
			#$result["function"],當前執行的函數名稱.
3081
			#$result["returnString"],爲符合字首條件的字串陣列內容。
57 liveuser 3082
			#必填參數:
1 liveuser 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"],處理好的的字串內容.
57 liveuser 3140
			#必填參數:
1 liveuser 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
	/*
57 liveuser 3174
	#函式說明:
1 liveuser 3175
	#移除字串開頭的特定內容
57 liveuser 3176
	#回傳結果:
1 liveuser 3177
	#$result["status"],寄信的情況,若爲"true",則十之八九沒有問題.
3178
	#$result["error"],錯誤訊息陣列.
3179
	#$result["function"],當前執行的函數.
3180
	#$result["content"],處理好的字串.
440 liveuser 3181
	#$result["argu"],使用的參數.
57 liveuser 3182
	#必填參數:
1 liveuser 3183
	#$conf["inputStr"],字串,要檢查並移除開頭有 $conf["keyWords"] 的字串.
3184
	$conf["inputStr"]="";
3185
	#$conf["keyWord"],字串,要移除的字串開頭關鍵字.
3186
	$conf["keyWord"]=""; 
57 liveuser 3187
	#可省略參數:
1 liveuser 3188
	#$conf["recursive"],字串,"true"代表要遞迴移除開頭的關鍵字,預設為"false",只移除開頭關鍵字1次.
3189
	#$conf["recursive"]="false";
217 liveuser 3190
	#參考資料:
3191
	#無.
57 liveuser 3192
	#備註:
3193
	#無.
1 liveuser 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
 
440 liveuser 3228
		#記錄參數
3229
		$result["argu"]=$conf;
3230
 
1 liveuser 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
 
440 liveuser 3300
		#debug
3301
		#var_dump($conf["inputStr"],$conf["keyWord"],$found);
3302
 
1 liveuser 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
 
57 liveuser 3337
				#函式說明:
1 liveuser 3338
				#移除字串開頭的特定內容
57 liveuser 3339
				#回傳結果:
1 liveuser 3340
				#$result["status"],寄信的情況,若爲"true",則十之八九沒有問題.
3341
				#$result["error"],錯誤訊息陣列.
3342
				#$result["function"],當前執行的函數.
3343
				#$result["content"],處理好的字串.
57 liveuser 3344
				#必填參數:
1 liveuser 3345
				#$conf["inputStr"],字串,要檢查並移除開頭有 $conf["keyWords"] 的字串.
3346
				$conf["stringProcess::delKeyWordsInStrHead"]["inputStr"]=$result["content"];
3347
				#$conf["keyWord"],字串,要移除的字串開頭關鍵字.
3348
				$conf["stringProcess::delKeyWordsInStrHead"]["keyWord"]=$conf["keyWord"]; 
57 liveuser 3349
				#可省略參數:
1 liveuser 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
	/*
443 liveuser 3390
	#函式說明:
440 liveuser 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
	/*
1 liveuser 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"]="";
57 liveuser 3693
	#可省略參數:
3694
	#無.
217 liveuser 3695
	#參考資料:
3696
	#無.
57 liveuser 3697
	#備註:
3698
	#無.
1 liveuser 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
 
482 liveuser 3825
		#預設存放 qbpwcf 可執行程式 parse 的位置
483 liveuser 3826
		$defaultQbpwcfUsrBinParse="/usr/bin/parse";
482 liveuser 3827
 
3828
		#預設存放 qbpwcf local 可執行程式 parse 的位置
483 liveuser 3829
		$defaultLocalQbpwcfUsrBinParse="usr/bin/parse";
482 liveuser 3830
 
3831
		#預設存放 qbpwcf 可執行程式 parse 的位置
3832
		$qbpwcfUsrBinParseArray=array($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
			#如果存放帳號密碼的xml檔案不存在
483 liveuser 3914
			if(!file_exists($qbpwcfUsrBinParse)){
482 liveuser 3915
 
3916
				#如果是最後一個xml檔案了
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
				#更新要使用的 存放帳號密碼的xml檔案
3936
				$defaultQbpwcfUsrBinParse=$qbpwcfUsrBinParse;
3937
 
3938
				#跳出 foreach
3939
				break;
3940
 
3941
				}#else end
3942
 
3943
			}#foreach end
3944
 
873 liveuser 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
 
4086
			#設置執行失敗
4087
			$result["status"]="false";
4088
 
4089
			#設置錯誤訊息
4090
			$result["error"][]="bash syntax error";
4091
 
4092
			#設置執行錯誤
4093
			$result["error"][]=$proc;
4094
 
4095
			#回傳結果
4096
			return $result;
4097
 
4098
 
4099
			}#if end
4100
 
4101
		#移除暫存檔案
4102
		unlink($scriptFile2test);
4103
 
443 liveuser 4104
		#預設要運行的指令
482 liveuser 4105
		$cmd=$defaultQbpwcfUsrBinParse.' '.$conf["input"];
443 liveuser 4106
 
1 liveuser 4107
		#執行印出參數的php程式
95 liveuser 4108
		exec($cmd,$output,$status);
1 liveuser 4109
 
4110
		#如果運行正常
4111
		if($status===0){
4112
 
4113
			#設置執行正常
4114
			$result["status"]="true";
4115
 
869 liveuser 4116
			#如果輸出不是 json
4117
			if(json_validate($output[0])===false){
4118
 
4119
				#設置執行失敗
4120
				$result["status"]="false";
4121
 
4122
				#設置執行錯誤訊息
4123
				$result["error"][]="not json output";
4124
 
4125
				#設置執行錯誤訊息
4126
				$result["error"][]=$output;
4127
 
4128
				#回傳結果
4129
				return $result;
4130
 
4131
				}#if end
4132
 
4133
			#解析json,並轉成array
4134
			$output=(array)json_decode($output[0]);
4135
 
1 liveuser 4136
			#移除被執行的php檔案名稱
4137
			unset($output[0]);
4138
 
4139
			#初始化參數陣列
4140
			$params=array();
4141
 
4142
			#針對每個參數
4143
			foreach($output as $param){
4144
 
4145
				#取得參數
4146
				$params[]=$param;
4147
 
4148
				}#foreach end
4149
 
4150
			#取得參數陣列
4151
			$result["content"]=$params;
4152
 
4153
			#取得參數數目
4154
			$result["count"]=count($params);
4155
 
4156
			#回傳結果
4157
			return $result;
4158
 
4159
			}#if end
4160
 
4161
		#反之運行不正常
4162
		else{
4163
			#設置執行正常
4164
			$result["status"]="false";
4165
 
4166
			#設置錯誤訊息
873 liveuser 4167
			$result["error"][]="解析字串出錯";
4168
 
4169
			#設置 escaped 過後的 input 資訊到錯誤訊息陣列裡面
4170
			$result["error"][]="escaped input:".escapeshellarg($conf["input"]);
1 liveuser 4171
 
4172
			#回傳結果
4173
			return $result;
4174
 
4175
			}#else end
4176
 
4177
		}#function parse end
4178
 
4179
	/*
4180
	#函式說明:
4181
	#清除字串的「"」或「'」符號.
4182
	#回傳結果:
525 liveuser 4183
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
4184
	#$result["function"],當前執行的函式內容.
4185
	#$result["error"],錯誤訊息陣列.
4186
	#$result["content"],剔除「"」或「'」符號後的字串.
1 liveuser 4187
	#必填參數:
4188
	#$conf["str"],字串,要處理的字串.
4189
	$conf["str"]="";
57 liveuser 4190
	#可省略參數:
4191
	#無.
217 liveuser 4192
	#參考資料:
4193
	#無.
57 liveuser 4194
	#備註:
4195
	#無.
1 liveuser 4196
	*/
4197
	public static function clearStrSymbol(&$conf){
4198
 
525 liveuser 4199
		#初始化要回傳的結果
4200
		$result=array();
4201
 
4202
		#取得當前執行的函數名稱
4203
		$result["function"]=__FUNCTION__;
4204
 
4205
		#如果沒有參數
4206
		if(func_num_args()==0){
4207
 
4208
			#設置執行失敗
4209
			$result["status"]="false";
4210
 
4211
			#設置執行錯誤訊息
4212
			$result["error"]="函數".$result["function"]."需要參數";
4213
 
4214
			#回傳結果
4215
			return $result;
4216
 
4217
			}#if end
4218
 
1 liveuser 4219
		#取得參數
525 liveuser 4220
		$result["argu"]=$conf;
4221
 
4222
		#如果 $conf 不為陣列
4223
		if(gettype($conf)!=="array"){
4224
 
4225
			#設置執行失敗
4226
			$result["status"]="false";
4227
 
4228
			#設置執行錯誤訊息
4229
			$result["error"][]="\$conf變數須為陣列形態";
4230
 
4231
			#如果傳入的參數為 null
4232
			if($conf===null){
4233
 
4234
				#設置執行錯誤訊息
4235
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4236
 
4237
				}#if end
4238
 
4239
			#回傳結果
4240
			return $result;
4241
 
4242
			}#if end
4243
 
4244
		#函式說明:
4245
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4246
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4247
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4248
		#$result["function"],當前執行的函式名稱.
4249
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4250
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4251
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4252
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4253
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4254
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4255
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4256
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4257
		#必填寫的參數:
4258
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4259
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4260
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4261
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("str");
4262
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4263
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4264
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4265
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4266
		#可以省略的參數:
4267
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4268
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
4269
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4270
		#$conf["canNotBeEmpty"]=array();
4271
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4272
		#$conf["canBeEmpty"]=array();
4273
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4274
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4275
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4276
		#$conf["skipableVariableName"]=array();
4277
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4278
		#$conf["skipableVariableType"]=array();
4279
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4280
		#$conf["skipableVarDefaultValue"]=array("");
4281
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4282
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4283
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4284
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4285
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4286
		#$conf["arrayCountEqualCheck"][]=array();
4287
		#參考資料來源:
4288
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4289
		#建議:
4290
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
4291
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4292
		unset($conf["variableCheck::checkArguments"]);
4293
 
4294
		#如果檢查參數失敗
4295
		if($checkArguments["status"]==="false"){
4296
 
4297
			#設置執行失敗
4298
			$result["status"]="false";
4299
 
4300
			#設置執行錯誤訊息
4301
			$result["error"]=$checkArguments;
4302
 
4303
			#回傳結果
4304
			return $result;
4305
 
4306
			}#if end
4307
 
4308
		#如果檢查參數不通過
4309
		if($checkArguments["passed"]==="false"){
4310
 
4311
			#設置執行失敗
4312
			$result["status"]="false";
4313
 
4314
			#設置執行錯誤訊息
4315
			$result["error"]=$checkArguments;
4316
 
4317
			#回傳結果
4318
			return $result;
4319
 
4320
			}#if end
4321
 
4322
		#取得參數
1 liveuser 4323
		$str=$conf["str"];
4324
 
4325
		#檢查是否有「"」在開頭
4326
		$strHeadSymbol1=strpos($str,"\"");	
4327
 
4328
		#檢查是否有「'」在開頭
4329
		$strHeadSymbol2=strpos($str,"'");
4330
 
4331
		#分割輸入的字串為一個個字的陣列
4332
		$splitedFileName=str_split($str);	
4333
 
4334
		#取得輸入參數的長度
4335
		$fileNameStrlen=strlen($str);
4336
 
4337
		#如果檔案名稱被「"」或「'」包住
4338
		if
4339
		(
4340
			$strHeadSymbol1===0  && $splitedFileName[$fileNameStrlen-1]==="\"" 
4341
			||
4342
			$strHeadSymbol2===0  && $splitedFileName[$fileNameStrlen-1]==="'" 
4343
		){
4344
 
4345
			#初始化儲存處理好的字串
4346
			$fixedStr="";
4347
 
4348
			#將字串的「"」包住的內容
4349
			for($i=1;$i<$fileNameStrlen-1;$i++){
4350
 
4351
				#取出
4352
				$fixedStr=$fixedStr.$splitedFileName[$i];
4353
 
4354
				}#for end
4355
 
525 liveuser 4356
			#儲存處理好的字串
4357
			$result["content"]=$fixedStr;
1 liveuser 4358
 
4359
			}#if end
4360
 
525 liveuser 4361
		#儲存原先的字串
4362
		$result["content"]=$str;
4363
 
4364
		#設置執行正常
4365
		$result["status"]="true";
4366
 
4367
		#回傳結果
4368
		return $result;
4369
 
1 liveuser 4370
		}#function clearStrSymbol end
4371
 
4372
	/*
4373
	#函式說明:
525 liveuser 4374
	#將字串中的每個字變成hex的字串陣列
1 liveuser 4375
	#回傳結果:
525 liveuser 4376
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
4377
	#$result["function"],當前執行的函式內容.
4378
	#$result["error"],錯誤訊息陣列.
4379
	#$result["content"],hex的字串陣列.
1 liveuser 4380
	#必填參數:
217 liveuser 4381
	#$conf["input"],字串,要轉換成bytes陣列的字串.
1 liveuser 4382
	$conf["input"]="";
4383
	#可省略參數:
55 liveuser 4384
	#無.
217 liveuser 4385
	#參考資料:
4386
	#無.
55 liveuser 4387
	#備註:
516 liveuser 4388
	#無.
1 liveuser 4389
	*/	
55 liveuser 4390
	public static function str2bytesArray(&$conf){
1 liveuser 4391
 
525 liveuser 4392
		#初始化要回傳的結果
1 liveuser 4393
		$result=array();
525 liveuser 4394
 
4395
		#取得當前執行的函數名稱
4396
		$result["function"]=__FUNCTION__;
4397
 
1 liveuser 4398
		#初始化儲存bytes陣列
4399
		$result["content"]=array();
525 liveuser 4400
 
4401
		#如果沒有參數
4402
		if(func_num_args()==0){
4403
 
4404
			#設置執行失敗
4405
			$result["status"]="false";
4406
 
4407
			#設置執行錯誤訊息
4408
			$result["error"]="函數".$result["function"]."需要參數";
4409
 
4410
			#回傳結果
4411
			return $result;
4412
 
4413
			}#if end
4414
 
4415
		#取得參數
4416
		$result["argu"]=$conf;
4417
 
4418
		#如果 $conf 不為陣列
4419
		if(gettype($conf)!=="array"){
4420
 
4421
			#設置執行失敗
4422
			$result["status"]="false";
4423
 
4424
			#設置執行錯誤訊息
4425
			$result["error"][]="\$conf變數須為陣列形態";
4426
 
4427
			#如果傳入的參數為 null
4428
			if($conf===null){
4429
 
4430
				#設置執行錯誤訊息
4431
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4432
 
4433
				}#if end
4434
 
4435
			#回傳結果
4436
			return $result;
4437
 
4438
			}#if end
4439
 
4440
		#函式說明:
4441
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4442
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4443
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4444
		#$result["function"],當前執行的函式名稱.
4445
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4446
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4447
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4448
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4449
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4450
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4451
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4452
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4453
		#必填寫的參數:
4454
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4455
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4456
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4457
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
4458
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4459
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4460
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4461
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4462
		#可以省略的參數:
4463
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4464
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
4465
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4466
		#$conf["canNotBeEmpty"]=array();
4467
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4468
		#$conf["canBeEmpty"]=array();
4469
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4470
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4471
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4472
		#$conf["skipableVariableName"]=array();
4473
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4474
		#$conf["skipableVariableType"]=array();
4475
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4476
		#$conf["skipableVarDefaultValue"]=array("");
4477
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4478
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4479
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4480
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4481
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4482
		#$conf["arrayCountEqualCheck"][]=array();
4483
		#參考資料來源:
4484
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4485
		#建議:
4486
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
4487
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4488
		unset($conf["variableCheck::checkArguments"]);
4489
 
4490
		#如果檢查參數失敗
4491
		if($checkArguments["status"]==="false"){
4492
 
4493
			#設置執行失敗
4494
			$result["status"]="false";
4495
 
4496
			#設置執行錯誤訊息
4497
			$result["error"]=$checkArguments;
4498
 
4499
			#回傳結果
4500
			return $result;
4501
 
4502
			}#if end
4503
 
4504
		#如果檢查參數不通過
4505
		if($checkArguments["passed"]==="false"){
4506
 
4507
			#設置執行失敗
4508
			$result["status"]="false";
4509
 
4510
			#設置執行錯誤訊息
4511
			$result["error"]=$checkArguments;
4512
 
4513
			#回傳結果
4514
			return $result;
4515
 
4516
			}#if end
4517
 
1 liveuser 4518
		#當字串還有內容
4519
		while(strlen($conf["input"])>0)
4520
		{
4521
			#取得一個字串
4522
			$char=substr($conf["input"],0,1);	
4523
 
4524
			#儲存16進位的bytes數字
4525
			$result["content"][]=strtoupper(sprintf("%02s",(base_convert(ord($char),10,16))));
4526
 
217 liveuser 4527
			#取得剩下的字串
1 liveuser 4528
			$conf["input"]=substr($conf["input"],1);
4529
 
217 liveuser 4530
		}#while end
4531
 
517 liveuser 4532
		#設置執行正常
4533
		$result["status"]="true";
4534
 
1 liveuser 4535
		#回傳
4536
		return $result;
4537
 
4538
		}#funcrion str2bytesArray end
4539
 
4540
	/*
4541
	#函式說明:
525 liveuser 4542
	#將字串中的每個字變成hex的字串
4543
	#回傳結果:
4544
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
4545
	#$result["function"],當前執行的函式內容.
4546
	#$result["error"],錯誤訊息陣列.
4547
	#$result["content"],hex字串.
4548
	#必填參數:
4549
	#$conf["input"],字串,要轉換成hex字串的字串.
4550
	$conf["input"]="";
4551
	#可省略參數:
4552
	#無.
4553
	#參考資料:
4554
	#無.
4555
	#備註:
4556
	#無.
4557
	*/	
4558
	public static function str2hexStr(&$conf){
4559
 
4560
		#初始化要回傳的結果
4561
		$result=array();
4562
 
4563
		#取得當前執行的函數名稱
4564
		$result["function"]=__FUNCTION__;
4565
 
4566
		#初始化儲存bytes陣列
4567
		$result["content"]=array();
4568
 
4569
		#如果沒有參數
4570
		if(func_num_args()==0){
4571
 
4572
			#設置執行失敗
4573
			$result["status"]="false";
4574
 
4575
			#設置執行錯誤訊息
4576
			$result["error"]="函數".$result["function"]."需要參數";
4577
 
4578
			#回傳結果
4579
			return $result;
4580
 
4581
			}#if end
4582
 
4583
		#取得參數
4584
		$result["argu"]=$conf;
4585
 
4586
		#如果 $conf 不為陣列
4587
		if(gettype($conf)!=="array"){
4588
 
4589
			#設置執行失敗
4590
			$result["status"]="false";
4591
 
4592
			#設置執行錯誤訊息
4593
			$result["error"][]="\$conf變數須為陣列形態";
4594
 
4595
			#如果傳入的參數為 null
4596
			if($conf===null){
4597
 
4598
				#設置執行錯誤訊息
4599
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4600
 
4601
				}#if end
4602
 
4603
			#回傳結果
4604
			return $result;
4605
 
4606
			}#if end
4607
 
4608
		#函式說明:
4609
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4610
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4611
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4612
		#$result["function"],當前執行的函式名稱.
4613
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4614
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4615
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4616
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4617
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4618
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4619
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4620
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4621
		#必填寫的參數:
4622
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4623
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4624
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4625
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
4626
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4627
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4628
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4629
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4630
		#可以省略的參數:
4631
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4632
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
4633
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4634
		#$conf["canNotBeEmpty"]=array();
4635
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4636
		#$conf["canBeEmpty"]=array();
4637
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4638
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4639
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4640
		#$conf["skipableVariableName"]=array();
4641
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4642
		#$conf["skipableVariableType"]=array();
4643
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4644
		#$conf["skipableVarDefaultValue"]=array("");
4645
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4646
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4647
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4648
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4649
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4650
		#$conf["arrayCountEqualCheck"][]=array();
4651
		#參考資料來源:
4652
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4653
		#建議:
4654
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
4655
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4656
		unset($conf["variableCheck::checkArguments"]);
4657
 
4658
		#如果檢查參數失敗
4659
		if($checkArguments["status"]==="false"){
4660
 
4661
			#設置執行失敗
4662
			$result["status"]="false";
4663
 
4664
			#設置執行錯誤訊息
4665
			$result["error"]=$checkArguments;
4666
 
4667
			#回傳結果
4668
			return $result;
4669
 
4670
			}#if end
4671
 
4672
		#如果檢查參數不通過
4673
		if($checkArguments["passed"]==="false"){
4674
 
4675
			#設置執行失敗
4676
			$result["status"]="false";
4677
 
4678
			#設置執行錯誤訊息
4679
			$result["error"]=$checkArguments;
4680
 
4681
			#回傳結果
4682
			return $result;
4683
 
4684
			}#if end
4685
 
4686
		#透過 stringProcess::str2bytesArray 取得 hex字串陣列
4687
		$conf["stringProcess::str2bytesArray"]["input"]=$conf;
4688
		$str2bytesArray=stringProcess::str2bytesArray($conf["stringProcess::str2bytesArray"]);
4689
		unset($conf["stringProcess::str2bytesArray"]);
4690
 
4691
		#如果執行失敗
4692
		if($str2bytesArray["status"]==="false"){
4693
 
4694
			#設置執行不正常
4695
			$result["status"]="false";
4696
 
4697
			#設置錯誤訊息
4698
			$result["error"]=$str2bytesArray;
4699
 
4700
			#回傳結果
4701
			return $resutl;
4702
 
4703
			}#if end
4704
 
4705
		#函式說明:
4706
		#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
4707
		#回傳的結果:
4708
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4709
		#$result["function"],當前執行的function名稱
4710
		#$result["error"],錯誤訊息陣列.
4711
		#$result["content"],處理好的字串.
4712
		#$result["argu"],使用的參數.
4713
		#必填參數:
4714
		#$conf["inputArray"],字串陣列,要轉成字串的一維陣列.
4715
		$conf["arrays::arrayToString"]["inputArray"]=$str2bytesArray["content"];
4716
		#可省略參數:
4717
		#$conf["spiltSymbol"],字串,用來區隔字串的符號,預設為;
4718
		#$conf["spiltSymbol"]=";";
4719
		#$conf["skipEnd"],字串,結尾是否不要加上符號,預設為"false",要加上符號,"true"代表不要加上符號。
4720
		#$conf["skipEnd"]="";
4721
		#參考資料:
4722
		#無.
4723
		#備註:
4724
		#無.
4725
		$arrayToString=arrays::arrayToString($conf["arrays::arrayToString"]);
4726
		unset($conf["arrays::arrayToString"]);
4727
 
4728
		#如果執行失敗
4729
		if($arrayToString["status"]==="false"){
4730
 
4731
			#設置執行不正常
4732
			$result["status"]="false";
4733
 
4734
			#設置錯誤訊息
4735
			$result["error"]=$arrayToString;
4736
 
4737
			#回傳結果
4738
			return $resutl;
4739
 
4740
			}#if end
4741
 
4742
		#設置執行正常
4743
		$result["status"]="true";
4744
 
4745
		#設置回傳的內容
4746
		$result["content"]=$arrayToString["content"];
4747
 
4748
		#回傳結果
4749
		return $result;
4750
 
4751
		}#function str2hexStr end
4752
 
4753
	/*
4754
	#函式說明:
217 liveuser 4755
	#將bytes數字(16進位)轉換為bit字串(0跟1來表述)
1 liveuser 4756
	#回傳結果:
525 liveuser 4757
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
4758
	#$result["function"],當前執行的函式內容.
4759
	#$result["error"],錯誤訊息陣列.
515 liveuser 4760
	#$result["content"],bit字串(0跟1來表述).
1 liveuser 4761
	#必填參數:
217 liveuser 4762
	#$conf["bytes"],字串,要轉換成bit的bytes數字.
1 liveuser 4763
	$conf["bytes"]="";
4764
	#可省略參數:
55 liveuser 4765
	#無.
217 liveuser 4766
	#參考資料:
4767
	#無.
55 liveuser 4768
	#備註:
516 liveuser 4769
	#無.
1 liveuser 4770
	*/
55 liveuser 4771
	public static function bytes2bitString(&$conf){
1 liveuser 4772
 
525 liveuser 4773
		#初始化要回傳的結果
4774
		$result=array();
4775
 
4776
		#取得當前執行的函數名稱
4777
		$result["function"]=__FUNCTION__;
4778
 
1 liveuser 4779
		#初始化結果
525 liveuser 4780
		$result["content"]=array();
4781
 
4782
		#如果沒有參數
4783
		if(func_num_args()==0){
4784
 
4785
			#設置執行失敗
4786
			$result["status"]="false";
4787
 
4788
			#設置執行錯誤訊息
4789
			$result["error"]="函數".$result["function"]."需要參數";
4790
 
4791
			#回傳結果
4792
			return $result;
4793
 
4794
			}#if end
4795
 
4796
		#取得參數
4797
		$result["argu"]=$conf;
4798
 
4799
		#如果 $conf 不為陣列
4800
		if(gettype($conf)!=="array"){
4801
 
4802
			#設置執行失敗
4803
			$result["status"]="false";
4804
 
4805
			#設置執行錯誤訊息
4806
			$result["error"][]="\$conf變數須為陣列形態";
4807
 
4808
			#如果傳入的參數為 null
4809
			if($conf===null){
4810
 
4811
				#設置執行錯誤訊息
4812
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4813
 
4814
				}#if end
4815
 
4816
			#回傳結果
4817
			return $result;
4818
 
4819
			}#if end
4820
 
4821
		#函式說明:
4822
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
4823
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4824
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
4825
		#$result["function"],當前執行的函式名稱.
4826
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4827
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4828
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4829
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4830
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4831
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4832
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4833
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4834
		#必填寫的參數:
4835
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4836
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4837
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4838
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("bytes");
4839
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
4840
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
4841
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4842
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4843
		#可以省略的參數:
4844
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4845
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
4846
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4847
		#$conf["canNotBeEmpty"]=array();
4848
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4849
		#$conf["canBeEmpty"]=array();
4850
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4851
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4852
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4853
		#$conf["skipableVariableName"]=array();
4854
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
4855
		#$conf["skipableVariableType"]=array();
4856
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4857
		#$conf["skipableVarDefaultValue"]=array("");
4858
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4859
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4860
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4861
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4862
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4863
		#$conf["arrayCountEqualCheck"][]=array();
4864
		#參考資料來源:
4865
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4866
		#建議:
4867
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
4868
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4869
		unset($conf["variableCheck::checkArguments"]);
4870
 
4871
		#如果檢查參數失敗
4872
		if($checkArguments["status"]==="false"){
4873
 
4874
			#設置執行失敗
4875
			$result["status"]="false";
4876
 
4877
			#設置執行錯誤訊息
4878
			$result["error"]=$checkArguments;
4879
 
4880
			#回傳結果
4881
			return $result;
4882
 
4883
			}#if end
4884
 
4885
		#如果檢查參數不通過
4886
		if($checkArguments["passed"]==="false"){
4887
 
4888
			#設置執行失敗
4889
			$result["status"]="false";
4890
 
4891
			#設置執行錯誤訊息
4892
			$result["error"]=$checkArguments;
4893
 
4894
			#回傳結果
4895
			return $result;
4896
 
4897
			}#if end
1 liveuser 4898
 
4899
		#儲存2進位數值
4900
		$result["content"]=sprintf("%08s",base_convert($conf["bytes"],16,2));
4901
 
517 liveuser 4902
		#設置執行正常
4903
		$result["status"]="true";
4904
 
1 liveuser 4905
		#回傳
4906
		return $result;
4907
 
4908
		}#function bytes2bitString end
4909
 
516 liveuser 4910
	/*
4911
	#函式說明:
4912
	#將2進位的8位數字字串,變成bytes字串.
4913
	#回傳結果:
4914
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
4915
	#$result["function"],當前執行的函式內容.
4916
	#$result["error"],錯誤訊息陣列.
4917
	#$result["content"],bytes字串,亦即其代表的一個字.
4918
	#必填參數:
4919
	#$conf["8bits"],字串,要轉換成byte字串的bit數字字串,小於8位會於前頭補0,若非2進位的bit數字字串,則會報錯.
4920
	$conf["8bits"]="00000000";
4921
	#可省略參數:
4922
	#無.
4923
	#參考資料:
4924
	#無.
4925
	#備註:
4926
	#無.
4927
	*/
4928
	public static function bit2byteStr($conf){
4929
 
4930
		#初始化要回傳的結果
4931
		$result=array();
4932
 
4933
		#設置當其函數名稱
4934
		$result["function"]=__FUNCTION__;
4935
 
4936
		#如果 $conf 不為陣列
4937
		if(gettype($conf)!="array"){
4938
 
4939
			#設置執行失敗
4940
			$result["status"]="false";
4941
 
4942
			#設置執行錯誤訊息
4943
			$result["error"][]="\$conf變數須為陣列形態";
4944
 
4945
			#如果傳入的參數為 null
4946
			if($conf==null){
4947
 
4948
				#設置執行錯誤訊息
4949
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4950
 
4951
				}#if end
4952
 
4953
			#函式說明:
4954
			#取得簡單的錯誤訊息
4955
			#回傳結果:
4956
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4957
			#$result["content"],結果.
4958
			#$result["function"],當前執行的函數
4959
			#$result["error"],涵式錯誤訊息陣列
4960
			#必填參數:
4961
			$conf["variableCheck::getSimpleError"]=array();
4962
			#$conf["error"],陣列,要處理的變數.
4963
			$conf["variableCheck::getSimpleError"]["error"]=$result;
4964
			#可省略參數:
4965
			#無
4966
			#參考資料:
4967
			#無.
4968
			#備註:
4969
			#無.
4970
			$getSimpleError=variableCheck::getSimpleError($conf["variableCheck::getSimpleError"]);
4971
			unset($conf["variableCheck::getSimpleError"]);
4972
 
4973
			#如果執行失敗
4974
			if($getSimpleError["status"]==="false"){
4975
 
4976
				#設置執行錯誤訊息
4977
				$result["error"][]=$getSimpleError;
4978
 
4979
				#回傳結果
4980
				return $result;
4981
 
4982
				}#if end
4983
 
4984
			#設置 $simpleError
4985
			$result["simpleError"]=$getSimpleError["content"];
4986
 
4987
			#回傳結果
4988
			return $result;
4989
 
4990
			}#if end
4991
 
4992
		#設置放置的參數
4993
		$result["argu"]=$conf;
4994
 
4995
		#函式說明:
4996
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4997
		#回傳結果:
4998
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4999
		#$result["error"],執行不正常結束的錯訊息陣列.
5000
		#$result["simpleError"],簡單表示的錯誤訊息.
5001
		#$result["function"],當前執行的函式名稱.
5002
		#$result["argu"],設置給予的參數.
5003
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5004
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5005
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5006
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5007
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5008
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5009
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5010
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5011
		#必填參數:
5012
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5013
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5014
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5015
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5016
		#可省略參數:
5017
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5018
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("8bits");
5019
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
5020
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
5021
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5022
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
5023
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5024
		#$conf["canNotBeEmpty"]=array();
5025
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5026
		#$conf["canBeEmpty"]=array();
5027
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5028
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5029
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5030
		#$conf["skipableVariableName"]=array();
5031
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5032
		#$conf["skipableVariableType"]=array();
5033
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5034
		#$conf["skipableVarDefaultValue"]=array("");
5035
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5036
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5037
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5038
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5039
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5040
		#$conf["arrayCountEqualCheck"][]=array();
5041
		#參考資料:
5042
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5043
		#備註:
5044
		#無.
5045
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5046
		unset($conf["variableCheck::checkArguments"]);
5047
 
5048
		#如果檢查參數失敗
5049
		if($checkArguments["status"]==="false"){
5050
 
5051
			#設置執行失敗
5052
			$result["status"]="false";
5053
 
5054
			#設置錯誤訊息陣列
5055
			$result["error"]=$checkArguments;
5056
 
5057
			#回傳結果
5058
			return $result;
5059
 
5060
			}#if end
5061
 
5062
		#如果檢查參數不通過
5063
		if($checkArguments["status"]==="false"){
5064
 
5065
			#設置執行失敗
5066
			$result["status"]="false";
5067
 
5068
			#設置錯誤訊息陣列
5069
			$result["error"]=$checkArguments;
5070
 
5071
			#回傳結果
5072
			return $result;
5073
 
5074
			}#if end
5075
 
5076
		#如果長度大於8
5077
		if(strlen($conf["8bits"])>8){
5078
 
5079
			#設置執行失敗
5080
			$result["status"]="false";
5081
 
5082
			#設置錯誤訊息陣列
5083
			$result["error"][]="請確認為8bits字串";
5084
 
5085
			#回傳結果
5086
			return $result;
5087
 
5088
			}#if end
5089
 
5090
		#取得結果字串
5091
		$result["content"]=chr(base_convert($conf["8bits"],2,10));
5092
 
5093
		#設置執行正常
5094
		$result["status"]="true";
5095
 
5096
		#回傳結果
5097
		return $result;
5098
 
5099
		}#function bit2bytes end
5100
 
724 liveuser 5101
	/*
5102
	#函式說明:
5103
	#隨機產生任意byte(s)組成的字串.
5104
	#回傳結果:
5105
	#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
5106
	#$result["function"],當前執行的函式內容.
5107
	#$result["error"],錯誤訊息陣列.
5108
	#$result["content"],用字串來表示的byte(s).
5109
	#必填參數:
5110
	#無.
5111
	#可省略參數:
5112
	#$conf["length"],字串,要產生多少bytes的字串,預設為1.
5113
	#$conf["length"]="1";
5114
	#參考資料:
5115
	#無.
5116
	#備註:
5117
	#無.
5118
	*/
5119
	public static function randomByte(&$conf){
5120
 
5121
		#初始化要回傳的結果
5122
		$result=array();
5123
 
5124
		#取得當前執行的函數名稱
5125
		$result["function"]=__FUNCTION__;
5126
 
5127
		#取得參數
5128
		$result["argu"]=$conf;
5129
 
5130
		#如果 $conf 不為陣列
5131
		if(gettype($conf)!="array"){
5132
 
5133
			#設置執行失敗
5134
			$result["status"]="false";
5135
 
5136
			#設置執行錯誤訊息
5137
			$result["error"][]="\$conf變數須為陣列形態";
5138
 
5139
			#如果傳入的參數為 null
5140
			if(is_null($conf)){
5141
 
5142
				#設置執行錯誤訊息
5143
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5144
 
5145
				}#if end
5146
 
5147
			#回傳結果
5148
			return $result;
5149
 
5150
			}#if end
5151
 
5152
		#函式說明:
5153
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5154
		#回傳結果:
5155
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5156
		#$result["error"],執行不正常結束的錯訊息陣列.
5157
		#$result["simpleError"],簡單表示的錯誤訊息.
5158
		#$result["function"],當前執行的函式名稱.
5159
		#$result["argu"],設置給予的參數.
5160
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5161
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5162
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5163
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5164
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5165
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5166
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5167
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5168
		#必填參數:
5169
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5170
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5171
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5172
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5173
		#可省略參數:
5174
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5175
		#$conf["mustBeFilledVariableName"]=array();
5176
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
5177
		#$conf["mustBeFilledVariableType"]=array();
5178
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5179
		#$conf["canBeEmptyString"]="false";
5180
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5181
		#$conf["canNotBeEmpty"]=array();
5182
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5183
		#$conf["canBeEmpty"]=array();
5184
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5185
		$conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("length");
5186
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5187
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("length");
5188
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5189
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
5190
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5191
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("1");
5192
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5193
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5194
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5195
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5196
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5197
		#$conf["disallowAllSkipableVarNotExist"]="";
5198
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5199
		#$conf["arrayCountEqualCheck"][]=array();
5200
		#參考資料:
5201
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5202
		#備註:
5203
		#無.
5204
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5205
		unset($conf["variableCheck::checkArguments"]);
5206
 
5207
		#如果檢查參數失敗
5208
		if($checkArguments["status"]==="false"){
5209
 
5210
			#設置執行失敗
5211
			$result["status"]="false";
5212
 
5213
			#設置錯誤訊息陣列
5214
			$result["error"]=$checkArguments;
5215
 
5216
			#回傳結果
5217
			return $result;
5218
 
5219
			}#if end
5220
 
5221
		#如果檢查參數不通過
5222
		if($checkArguments["status"]==="false"){
5223
 
5224
			#設置執行失敗
5225
			$result["status"]="false";
5226
 
5227
			#設置錯誤訊息陣列
5228
			$result["error"]=$checkArguments;
5229
 
5230
			#回傳結果
5231
			return $result;
5232
 
5233
			}#if end
5234
 
5235
		#初始化儲存用字串來表示的byte(s).
5236
		$result["content"]="";
5237
 
5238
		#要多少bytes就跑幾次
5239
		for($i=0;$i<$conf["length"];$i++){
5240
 
5241
			#暫存byte
5242
			$byte="";
5243
 
5244
			#隨機產生該byte開始bit不為0的位置
5245
			$bitNotZeroAddr=\rand(0,7);
5246
 
5247
			#每個bit都跑一次
5248
			for($j=0;$j<8;$j++){
5249
 
5250
				#如果還沒開始有資料
5251
				if($j<$bitNotZeroAddr){
5252
 
5253
					#加0
5254
					$byte=$byte."0";
5255
 
5256
					#下一個迴圈
5257
					continue;
5258
 
5259
					}#if end
5260
 
5261
				#隨機產生bit
5262
				$bit=\rand(0,1);
5263
 
5264
				#加bit
5265
				$byte=$byte.(string)($bit);
5266
 
5267
				}#for end
5268
 
5269
			#用字串來表示byte
5270
			$byte=chr(base_convert($byte,2,10));
5271
 
5272
			#串接byte
5273
			$result["content"]=$result["content"].$byte;
5274
 
5275
			}#for end
5276
 
5277
		#設置執行正常
5278
		$result["status"]="true";
5279
 
5280
		#回傳結果
5281
		return $result;
5282
 
5283
		}#function randomByte end
5284
 
5285
 
1 liveuser 5286
	}#class stringProcess end
5287
 
5288
?>