Subversion Repositories php-qbpwcf

Rev

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

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