Subversion Repositories php-qbpwcf

Rev

Rev 66 | Go to most recent revision | Details | Last modification | View Log | RSS feed

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