Subversion Repositories php-qbpwcf

Rev

Rev 166 | Rev 218 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 liveuser 1
<?php
2
 
3
/*
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2024 Min-Jhin,Chen
7
 
8
    This file is part of QBPWCF.
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
12
    the Free Software Foundation, either version 3 of the License, or
13
    (at your option) any later version.
14
 
15
    QBPWCF is distributed in the hope that it will be useful,
16
    but WITHOUT ANY WARRANTY; without even the implied warranty of
17
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
    GNU General Public License for more details.
19
 
20
    You should have received a copy of the GNU General Public License
21
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.
22
 
23
*/
24
namespace qbpwcf;
25
 
26
/*
27
類別說明:
28
跟搜尋功能相關的類別.
29
備註:
30
無.
31
*/
32
class 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
		#設置當前執行的函數
172 liveuser 135
		$result["function"]=__FUNCTION__;
3 liveuser 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;
165 liveuser 1965
 
3 liveuser 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){
165 liveuser 1996
 
3 liveuser 1997
		#初始化要回傳的變數
1998
		$result=array();
165 liveuser 1999
 
3 liveuser 2000
		#設置當前執行的函數
165 liveuser 2001
		$result["function"]=__FUNCTION__;
3 liveuser 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
 
166 liveuser 2023
			}#if end
3 liveuser 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();
166 liveuser 2091
		$result["foundedTrueKeyWords"]=array();
3 liveuser 2092
		$result["keyWordsIncludeStr"]=array();	
2093
 
2094
		#$conf["stringArray"] 陣列有幾個元素,就執行幾次。
2095
		foreach($conf["stringArray"] as $key=>$value){
2096
 
2097
			#檢查一個字串裡面是否有多個關鍵字
2098
			#回傳結果:
2099
			#$result["status"],"true"代表執行成功,"false"代表執行失敗.
2100
			#$result["error"],錯誤訊息.
2101
			#$result["function"],當前執行的函數名稱.
2102
			#$result["founded"],是否有找到的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
2103
			#$result["foundedKeyWords"],找到的關鍵字.
2104
			#必填參數:
2105
			$conf["search"]["findManyKeyWords"]["keyWords"]=$conf["keyWords"];#想要搜尋的關鍵字
2106
			$conf["search"]["findManyKeyWords"]["string"]=$value;#要被搜尋的字串內容
2107
			#可省略參數:
2108
 
2109
			#如果 $conf["completeEqual"] 有設定
2110
			if(isset($conf["completeEqual"])){
2111
 
2112
				#設定其屬性
2113
				$conf["search"]["findManyKeyWords"]["completeEqual"]=$conf["completeEqual"];#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
2114
 
2115
				}#if end
2116
 
2117
			$searchResult=search::findManyKeyWords($conf["search"]["findManyKeyWords"]);
2118
			unset($conf["search"]["findManyKeyWords"]);
2119
 
2120
			#如果檢查一個字串裡面是否有多個關鍵字失敗
2121
			if($searchResult["status"]==="false"){
2122
 
2123
				#設置執行不正常
2124
				$result["status"]="false";
2125
 
2126
				#程式停止執行
2127
				$result["error"]=$searchResult;
2128
 
2129
				#回傳結果
2130
				return $result;
2131
 
2132
				}#if end
2133
 
2134
			#如果 $searchResult["founded"] 等於 "true"
2135
			if($searchResult["founded"]==="true"){
2136
 
2137
				#取得該元素
2138
				$result["foundedTrueKey"][$key]=$value;
2139
 
166 liveuser 2140
				#儲存該元素存在的關鍵字
2141
				$result["foundedTrueKeyWords"][$key]=$searchResult["foundedKeyWords"];
2142
 
3 liveuser 2143
				#合併找到的關鍵字
2144
				#函式說明:
2145
				#將多個一維陣列串聯起來,key從0開始排序.
2146
				#回傳的結果:
2147
				#$result["status"],"true"表執行正常,"false"代表執行不正常.
2148
				#$result["error"],錯誤訊息陣列.
2149
				#$result["function"],當前執行的函數.
2150
				#$result["content"],合併好的一維陣列.
2151
				#必填參數
2152
				#$conf["inputArray"],陣列,要合併的一維陣列變數,例如:=array($array1,$array2);
2153
				$conf["arrays::mergeArray"]["inputArray"]=array($result["foundedKeyWords"],$searchResult["foundedKeyWords"]);
2154
				#可省略參數:
2155
				#$conf["allowRepeat"],字串,預設為"true",允許重複的結果;若為"false"則不會出現重複的元素內容.
2156
				$conf["arrays::mergeArray"]["allowRepeat"]="false";
2157
				#參考資料:
2158
				#無.
2159
				#備註:
2160
				#無.
2161
				$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
2162
				unset($conf["arrays::mergeArray"]);
2163
 
2164
				#如果失敗
166 liveuser 2165
				if($mergeArray["status"]==="false"){
3 liveuser 2166
 
2167
					#設置執行不正常
2168
					$result["status"]="false";
2169
 
2170
					#程式停止執行
2171
					$result["error"]=$mergeArray;
2172
 
2173
					#回傳結果
2174
					return $result;
2175
 
2176
					}#if end
2177
 
2178
				#儲存找到的關鍵字
2179
				$result["foundedKeyWords"]=$mergeArray["content"];
2180
 
2181
				#儲存有找到關鍵字的來源的索引與其內容跟找到的關鍵字
2182
				$result["keyWordsIncludeStr"][]=array("sourceIndex"=>$key,"sourceVal"=>$value,"keyWords"=>$searchResult["foundedKeyWords"]);
2183
 
2184
				}#if end
2185
 
2186
			#如果 $searchResult["founded"] 等於 "false"
2187
			else{
2188
 
2189
				#取得該元素
2190
				$result["foundedFalseKey"][$key]=$value;
2191
 
2192
				}#if end
2193
 
2194
			}#foreach end
2195
 
2196
 
2197
		#如果沒有找到的元素內容
2198
		if(!isset($result["foundedTrueKey"])){
2199
 
2200
			#設置找到的元素內容為空
2201
			$result["foundedTrueKey"]=array();
2202
 
2203
			#設置沒有找到全部的關鍵字
2204
			$result["foundedAll"]="false";
2205
 
2206
			}#if end
2207
 
2208
		#如果所有關鍵字都找到了
2209
		else if(count($result["foundedKeyWords"])===count($conf["keyWords"])){
2210
 
2211
			#設置有找到全部的關鍵字
2212
			$result["foundedAll"]="true";
2213
 
2214
			}#if end
2215
 
2216
		#反之只有找到部分關鍵字	
2217
		else{
2218
 
2219
			#設置沒有找到全部的關鍵字
2220
			$result["foundedAll"]="false";
2221
 
2222
			}#else end	
2223
 
2224
		#執行到這邊代表執行成功
2225
		$result["status"]="true";
2226
 
2227
		#回傳結果
2228
		return $result;
2229
 
2230
		}#function findManyKeyWordsFromManyString end
2231
 
2232
	/*	
2233
	#函式說明:
2234
	#檢查一個字串裡面是否沒有多個任何篩選字存在
2235
	#回傳結果:
2236
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2237
	#$result["function"],當前執行的函數
2238
	#$result["error"],涵式錯誤訊息,若爲""則表示沒有錯誤 		
2239
	#$result["filtered"],該字串是否為要過濾掉的,"true"為要過濾掉的;"false"為不用過濾掉的
2240
	#$result["argu"],使用的參數.
2241
	#必填參數:
2242
	#$conf["inputStr"],字串,要過濾的字串.
2243
	$conf["inputStr"]="";
2244
	#$conf["filterWord"],字串陣列,要過濾的字串不能含有該陣列元素之一.
2245
	$conf["filterWord"]=array("");
2246
	#可省略參數:
2247
	#無.
2248
	#參考資料:
2249
	#無.
2250
	#備註:
2251
	#無.
2252
	*/
2253
	public static function filterString(&$conf){
2254
 
2255
		#初始化要回傳的內容
2256
		$result=array();
2257
 
2258
		#設置當前執行的函數
2259
		$result["function"]=__FUNCTION__;
2260
 
2261
		#如果 $conf 不為陣列
2262
		if(gettype($conf)!="array"){
2263
 
2264
			#設置執行失敗
2265
			$result["status"]="false";
2266
 
2267
			#設置執行錯誤訊息
2268
			$result["error"][]="\$conf變數須為陣列形態";
2269
 
2270
			#如果傳入的參數為 null
2271
			if($conf==null){
2272
 
2273
				#設置執行錯誤訊息
2274
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2275
 
2276
				}#if end
2277
 
2278
			#回傳結果
2279
			return $result;
2280
 
2281
			}#if end
2282
 
2283
		#取得使用的參數
2284
		$result["argu"]=$conf;
2285
 
2286
		#檢查參數	
2287
		#函式說明:
2288
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2289
		#回傳結果:
2290
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2291
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2292
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2293
		#必填寫的參數:
2294
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2295
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputStr","filterWord");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2296
		#可以省略的參數:
2297
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("string","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
2298
		#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2299
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2300
		unset($conf["variableCheck"]["isexistMuti"]);
2301
 
2302
		#如果檢查失敗
2303
		if($checkResult["passed"]=="false"){
2304
 
2305
			#設置錯誤
2306
			$result["status"]="false";
2307
 
2308
			#設置錯誤訊息
2309
			$result["error"]=$checkResult;
2310
 
2311
			#回傳結果
2312
			return $result;
2313
 
2314
			}#if end
2315
 
2316
		#針對每個過濾的字
2317
		foreach($conf["filterWord"] as $filterWord){
2318
 
2319
			#檢查要過濾的字串是否含有要過濾的字
2320
			#函式說明:
2321
			#檢查字串裡面有無指定的關鍵字
2322
			#回傳結果:
2323
			#$result["status"],"true"代表執行成功,"false"代表執行失敗。
2324
			#$result["error"],錯誤訊息
2325
			#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
2326
			#必填參數:
2327
			$conf["search"]["findKeyWord"]["keyWord"]=$filterWord;#想要搜尋的關鍵字
2328
			$conf["search"]["findKeyWord"]["string"]=$conf["inputStr"];#要被搜尋的字串內容
2329
			#可省略參數:
2330
			#$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
2331
			$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);
2332
			unset($conf["search"]["findKeyWord"]);
2333
 
2334
			#var_dump($searchResult);
2335
 
2336
			#如果 $searchResult["founded"]等於"true"
2337
			if($searchResult["founded"]=="true"){
2338
 
2339
				#則代表該字串為要過濾掉的
2340
 
2341
				#設置執行成功的識別
2342
				$result["status"]="true";
2343
 
2344
				#設置該字串是要過濾掉的
2345
				$result["filtered"]="true";
2346
 
2347
				#回傳結果
2348
				return $result;
2349
 
2350
				}#if end
2351
 
2352
			}#foreach end
2353
 
2354
		#執行到這邊代表,都沒有要過濾掉
2355
 
2356
		#設置執行成功的識別
2357
		$result["status"]="true";
2358
 
2359
		#設置該字串是不用過濾掉的
2360
		$result["filtered"]="false";
2361
 
2362
		#回傳結果
2363
		return $result;
2364
 
2365
		}#function filterString end
2366
 
2367
	/*	
2368
	#函式說明:
2369
	#檢查多個字串裡面是否沒有多個任何篩選字存在
2370
	#回傳結果:
2371
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2372
	#$result["function"],當前執行的函數
2373
	#$result["error"],涵式錯誤訊息,若爲""則表示沒有錯誤 		
2374
	#$result["filtered"],該字串是否為要過濾掉的識別陣列,"true"為要過濾掉的;"false"為不用過濾掉的
2375
	#必填參數:
2376
	#$conf["inputStr"],字串陣列,要過濾的字串陣列.
2377
	$conf["inputStr"]=array("");
2378
	#$conf["filterWord"],字串陣列,要過濾的字串不能含有該陣列元素之一.
2379
	$conf["filterWord"]=array("");
2380
	#可省略參數:
2381
	#無.
2382
	#參考資料:
2383
	#無.
2384
	#備註:
2385
	#無.
2386
	*/
2387
	public static function filterMutiString(&$conf){
2388
 
2389
		#初始化要回傳的內容
2390
		$result=array();
2391
 
2392
		#設置當前執行的函數
2393
		$result["function"]=__FUNCTION__;
2394
 
2395
		#如果 $conf 不為陣列
2396
		if(gettype($conf)!="array"){
2397
 
2398
			#設置執行失敗
2399
			$result["status"]="false";
2400
 
2401
			#設置執行錯誤訊息
2402
			$result["error"][]="\$conf變數須為陣列形態";
2403
 
2404
			#如果傳入的參數為 null
2405
			if($conf==null){
2406
 
2407
				#設置執行錯誤訊息
2408
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2409
 
2410
				}#if end
2411
 
2412
			#回傳結果
2413
			return $result;
2414
 
2415
			}#if end
2416
 
2417
		#檢查參數	
2418
		#函式說明:
2419
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2420
		#回傳結果:
2421
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2422
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2423
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2424
		#必填寫的參數:
2425
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2426
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("inputStr","filterWord");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2427
		#可以省略的參數:
2428
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("array","array");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
2429
		#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2430
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2431
		unset($conf["variableCheck"]["isexistMuti"]);
2432
 
2433
		#如果檢查失敗
2434
		if($checkResult["passed"]=="false"){
2435
 
2436
			#設置錯誤
2437
			$result["status"]="false";
2438
 
2439
			#設置錯誤訊息
2440
			$result["error"]=$checkResult;
2441
 
2442
			#回傳結果
2443
			return $result;
2444
 
2445
			}#if end
2446
 
2447
		#針對每個要檢測是否要過濾掉的字串
2448
		foreach($conf["inputStr"] as $inputStr){
2449
 
2450
			#函式說明:
2451
			#檢查一個字串裡面是否沒有多個任何篩選字存在
2452
			#回傳結果:
2453
			#$result["status"],執行是否成功的識別,"true"為執行成功;"false"為執行失敗
2454
			#$result["error"],錯誤訊息陣列			
2455
			#$result["filtered"],該字串是否為要過濾掉的,"true"為要過濾掉的;"false"為不用過濾掉的
2456
			#必填參數:
2457
			$conf["search"]["filterString"]["inputStr"]=$inputStr;#要過濾的字串
2458
			$conf["search"]["filterString"]["filterWord"]=$conf["filterWord"];#要過濾的字串不能含有該陣列元素之一
2459
			$filteredResult=search::filterString($conf["search"]["filterString"]);
2460
			unset($conf["search"]["filterString"]);
2461
 
2462
			#儲存每個字串判斷後是否要篩選的結果
2463
			$result["filtered"][]=$filteredResult["filtered"];
2464
 
2465
			}#foreach end
2466
 
2467
		#設置執行成功的識別
2468
		$result["status"]="true";
2469
 
2470
		#回傳結果
2471
		return $result;
2472
 
2473
		}#function filterMutiString end
2474
 
2475
	/*	
2476
	#函式說明:
2477
	#檢查一個字串裡面是否有多個關鍵字,將每個關鍵字的搜尋結果回傳.
2478
	#回傳結果:
2479
	#$result["status"],"true"代表執行成功,"false"代表執行失敗。
2480
	#$result["function"],當前執行的函數名稱.
2481
	#$result["error"],錯誤訊息
2482
	#$result["founded"][$i],是否找到第$i+1個關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
2483
	#必填參數:
2484
	#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
2485
	$conf["keyWords"]=array("");
2486
	#$conf["string"],字串,要被搜尋的字串內容.
2487
	$conf["string"]="";
2488
	#可省略參數:
2489
	#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合.
2490
	#$conf["completeEqual"]="true";
2491
	#參考資料:
2492
	#無.
2493
	#備註:
2494
	#無.
2495
	*/
2496
	public static function findManyKeyWordsLosse(&$conf){
2497
 
2498
		#初始化要回傳的變數
2499
		$result=array();
2500
 
2501
		#設置當前執行的函數
2502
		$result["function"]=__FUNCTION__;	
2503
 
2504
		#如果 $conf 不為陣列
2505
		if(gettype($conf)!="array"){
2506
 
2507
			#設置執行失敗
2508
			$result["status"]="false";
2509
 
2510
			#設置執行錯誤訊息
2511
			$result["error"][]="\$conf變數須為陣列形態";
2512
 
2513
			#如果傳入的參數為 null
2514
			if($conf==null){
2515
 
2516
				#設置執行錯誤訊息
2517
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2518
 
2519
				}#if end
2520
 
2521
			#回傳結果
2522
			return $result;
2523
 
2524
			}#if end
2525
 
2526
		#函式說明:
2527
		#檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
2528
		#回傳結果:
2529
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2530
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2531
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2532
		#必填寫的參數:
2533
		$conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
2534
		$conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("keyWords","string");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
2535
		#可以省略的參數:
2536
		$conf["variableCheck"]["isexistMuti"]["variableType"]=array("array","string");#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
2537
		#$conf["variableCheck"]["isexistMuti"]["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
2538
		$checkResult=variableCheck::isexistMulti($conf["variableCheck"]["isexistMuti"]);
2539
		unset($conf["variableCheck"]["isexistMuti"]);
2540
 
2541
		#如果檢查失敗
2542
		if($checkResult["passed"]=="false"){
2543
 
2544
			#設置錯誤
2545
			$result["status"]="false";
2546
 
2547
			#設置錯誤訊息
2548
			$result["error"]=$checkResult;
2549
 
2550
			#回傳結果
2551
			return $result;
2552
 
2553
			}#if end
2554
 
2555
		#針對每個keyWord
2556
		foreach($conf["keyWords"] as $keyWord){
2557
 
2558
			#函式說明:
2559
			#檢查字串裡面有無指定的關鍵字
2560
			#回傳結果:
2561
			#$result["status"],"true"代表執行成功,"false"代表執行失敗。
2562
			#$result["error"],錯誤訊息
2563
			#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
2564
			#必填參數:
2565
			$conf["search"]["findKeyWord"]["keyWord"]=$keyWord;#想要搜尋的關鍵字
2566
			$conf["search"]["findKeyWord"]["string"]=$conf["string"];#要被搜尋的字串內容
2567
 
2568
			#如果 $conf["completeEqual"] 有設置
2569
			if(isset($conf["completeEqual"])){
2570
 
2571
				#如果 $conf["completeEqual"] 等於 "true"
2572
				if($conf["completeEqual"]=="true"){
2573
 
2574
					$conf["search"]["findKeyWord"]["completeEqual"]="true";#是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
2575
 
2576
					}#if end
2577
 
2578
				}#if end
2579
 
2580
			$searchResult=search::findKeyWord($conf["search"]["findKeyWord"]);
2581
			unset($conf["search"]["findKeyWord"]);
2582
 
2583
			#如果沒有找到其中一個關鍵字
2584
			if($searchResult["founded"]=="false"){
2585
 
2586
				#設置沒有找到第n個關鍵字
2587
				$result["founded"][]="false";
2588
 
2589
				#設置沒有找到第n個關鍵字
2590
				$result["founded"][$keyWord]="false";
2591
 
2592
				}#if end
2593
 
2594
			#反之有找到關鍵字
2595
			else{
2596
 
2597
				#設置有找到第n個關鍵字
2598
				$result["founded"][]="true";
2599
 
2600
				#設置有找到第n個關鍵字
2601
				$result["founded"][$keyWord]="true";
2602
 
2603
				}#else end
2604
 
2605
			}#foreach end
2606
 
2607
		#設置執行成功
2608
		$result["status"]="true";
2609
 
2610
		#回傳結果
2611
		return $result;
2612
 
2613
		}#function findManyKeyWordsLoose end
2614
 
2615
	/*	
2616
	#函式說明:
2617
	#取得關鍵字在字串的哪個位置(字首,字尾,中間)
2618
	#回傳結果:
2619
	#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
2620
	#$result["error"],錯誤訊息陣列.
2621
	#$result["function"],當前執行的函數名稱.
2622
	#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
2623
	#$result["argu"],傳入的參數.
2624
	#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
2625
	#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
2626
	#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
2627
	#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
2628
	#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
2629
	#必填參數:
2630
	#$conf["inputStr"],字串,被搜尋的字串.
2631
	$conf["inputStr"]="";
2632
	#$conf["keyWord"],字串,關鍵字.
2633
	$conf["keyWord"]="";
2634
	#可省略參數:
2635
	#無.
2636
	#參考資料:
2637
	#http://php.net/manual/en/function.strpos.php
2638
	#備註:
2639
	#無.
2640
	*/
2641
	public static function findKeyWordPosition(&$conf){
2642
 
2643
		#初始化要回傳的內容
2644
		$result=array();
2645
 
2646
		#取得當前執行的函數名稱
2647
		$result["function"]=__FUNCTION__;
2648
 
2649
		#如果 $conf 不為陣列
2650
		if(gettype($conf)!="array"){
2651
 
2652
			#設置執行失敗
2653
			$result["status"]="false";
2654
 
2655
			#設置執行錯誤訊息
2656
			$result["error"][]="\$conf變數須為陣列形態";
2657
 
2658
			#如果傳入的參數為 null
2659
			if($conf==null){
2660
 
2661
				#設置執行錯誤訊息
2662
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2663
 
2664
				}#if end
2665
 
2666
			#回傳結果
2667
			return $result;
2668
 
2669
			}#if end
2670
 
2671
		#取得參數
2672
		$result["argu"]=$conf;
2673
 
2674
		#檢查參數
2675
		#函式說明:
2676
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2677
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2678
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2679
		#$result["function"],當前執行的函式名稱.
2680
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2681
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2682
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2683
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
2684
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2685
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2686
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2687
		#必填寫的參數:
2688
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2689
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2690
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2691
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr","keyWord");
2692
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2693
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
2694
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2695
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2696
		#可以省略的參數:
2697
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2698
		#$conf["canBeEmptyString"]="false";
2699
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2700
		#$conf["skipableVariableName"]=array();
2701
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2702
		#$conf["skipableVariableType"]=array();
2703
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2704
		#$conf["skipableVarDefaultValue"]=array("");
2705
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2706
		#$conf["arrayCountEqualCheck"][]=array();
2707
		#參考資料來源:
2708
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2709
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2710
		unset($conf["variableCheck::checkArguments"]);
2711
 
2712
		#如果檢查有誤
2713
		if($checkResult["status"]=="false"){
2714
 
2715
			#設置錯誤識別
2716
			$result["status"]="false";
2717
 
2718
			#設置錯誤訊息
2719
			$result["error"]=$checkResult;
2720
 
2721
			#回傳結果
2722
			return $result;
2723
 
2724
			}#if end
2725
 
2726
		#預設沒有找到關鍵字
2727
		$result["found"]="false";
2728
 
2729
		#預設不在開頭
2730
		$result["head"]="false";
2731
 
2732
		#預設不在結尾
2733
		$result["tail"]="false";
2734
 
2735
		#預設不在中間
2736
		$result["center"]="false";
2737
 
2738
		#預設關鍵字的開始位置
2739
		$result["indexS"]=-1;
2740
 
2741
		#預設關鍵字結束的位置
2742
		$result["indexE"]=-1;
2743
 
2744
		#如果檢查不通過
2745
		if($checkResult["passed"]=="false"){
2746
 
2747
			#設置錯誤識別
2748
			$result["status"]="false";
2749
 
2750
			#設置錯誤訊息
2751
			$result["error"]=$checkResult;
2752
 
2753
			#回傳結果
2754
			return $result;
2755
 
2756
			}#if end
2757
 
2758
		#取得關鍵字所在的位置
2759
		$keyWordAddr=strpos($conf["inputStr"],$conf["keyWord"]);
2760
 
2761
		#如果關鍵字不存在於字串裡面
2762
		if($keyWordAddr===FALSE){
2763
 
2764
			#設置執行正常
2765
			$result["status"]="true";
2766
 
2767
			#回傳結果
2768
			return $result;
2769
 
2770
			}#if end
2771
 
2772
		#如果關鍵字在字串開頭
2773
		if($keyWordAddr==0){
2774
 
2775
			#設置在開頭
2776
			$result["head"]="true";
2777
 
2778
			#設置有找到關鍵字
2779
			$result["found"]="true";
2780
 
2781
			}#if end
2782
 
2783
		#反之
2784
		else{
2785
 
2786
			#設置不在開頭
2787
			$result["head"]="false";
2788
 
2789
			}#else end	
2790
 
2791
		#如果關鍵字在字串結尾
2792
		if($keyWordAddr==(strlen($conf["inputStr"])-strlen($conf["keyWord"]))){
2793
 
2794
			#設置在結尾
2795
			$result["tail"]="true";
2796
 
2797
			#設置有找到關鍵字
2798
			$result["found"]="true";
2799
 
2800
			}#if end
2801
 
2802
		#反之
2803
		else{
2804
 
2805
			#設置不在結尾
2806
			$result["tail"]="false";
2807
 
2808
			}#else end
2809
 
2810
		#如果關鍵字在字串中間
2811
		if
2812
		(
2813
			($keyWordAddr>0 && $keyWordAddr<(strlen($conf["inputStr"])-strlen($conf["keyWord"])))
2814
			||
2815
			($result["head"]=="true" && $result["tail"]=="true")
2816
		){
2817
			#設置在中間
2818
			$result["center"]="true";
2819
 
2820
			#設置有找到關鍵字
2821
			$result["found"]="true";
2822
 
2823
			}#if end
2824
 
2825
		#反之
2826
		else{
2827
 
2828
			#設置不在中間
2829
			$result["center"]="false";
2830
 
2831
			}#else end
2832
 
2833
		#儲存關鍵字的開始位置
2834
		$result["indexS"]=$keyWordAddr;
2835
 
2836
		#儲存關鍵字結束的位置
2837
		$result["indexE"]=$result["indexS"]+strlen($conf["keyWord"]);
2838
 
2839
		#設置執行正常
2840
		$result["status"]="true";
2841
 
2842
		#回傳結果
2843
		return $result;
2844
 
2845
		}#function findKeyWordPosition end	
2846
 
2847
	/*	
2848
	#函式說明:
2849
	#取得多個關鍵字在字串的哪個位置(字首,字尾,中間)
2850
	#回傳結果:
2851
	#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
2852
	#$result["error"],錯誤訊息陣列.
2853
	#$result["function"],當前執行的函數名稱.
2854
	#$result["argu"],傳入的參數.
2855
	#$result["head"][i],第i個關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
2856
	#$result["tail"][i],第i個關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
2857
	#$result["center"][i],第i個關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
2858
	#$result["indexS"][i],第i個關鍵字在被搜尋字串的哪個位置開始.
2859
	#$result["indexE"][i],第i個關鍵字在被搜尋字串的哪個位置結束.
2860
	#必填參數:
2861
	#$conf["inputStr"],字串,被搜尋的字串.
2862
	$conf["inputStr"]="";
2863
	#$conf["keyWords"],字串陣列,要搜尋的多個關鍵字
2864
	$conf["keyWords"]=array("");
2865
	#可省略參數:
2866
	#無.
2867
	#參考資料:
2868
	#http://php.net/manual/en/function.strpos.php
2869
	#備註:
2870
	#無.
2871
	*/
2872
	public static function findKeyWordsPosition(&$conf){
2873
 
2874
		#初始化要回傳的內容
2875
		$result=array();
2876
 
2877
		#取得當前執行的函數名稱
2878
		$result["function"]=__FUNCTION__;
2879
 
2880
		#如果 $conf 不為陣列
2881
		if(gettype($conf)!="array"){
2882
 
2883
			#設置執行失敗
2884
			$result["status"]="false";
2885
 
2886
			#設置執行錯誤訊息
2887
			$result["error"][]="\$conf變數須為陣列形態";
2888
 
2889
			#如果傳入的參數為 null
2890
			if($conf==null){
2891
 
2892
				#設置執行錯誤訊息
2893
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
2894
 
2895
				}#if end
2896
 
2897
			#回傳結果
2898
			return $result;
2899
 
2900
			}#if end
2901
 
2902
		#取得參數
2903
		$result["argu"]=$conf;
2904
 
2905
		#函式說明:
2906
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2907
		#回傳結果:
2908
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2909
		#$result["error"],執行不正常結束的錯訊息陣列.
2910
		#$result["simpleError"],簡單表示的錯誤訊息.
2911
		#$result["function"],當前執行的函式名稱.
2912
		#$result["argu"],設置給予的參數.
2913
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
2914
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
2915
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
2916
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
2917
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
2918
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
2919
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
2920
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
2921
		#必填參數:
2922
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2923
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2924
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2925
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2926
		#可省略參數:
2927
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2928
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr","keyWords");
2929
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
2930
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
2931
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2932
		#$conf["variadble::checkArguments"]["canBeEmptyString"]="false";
2933
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
2934
		#$conf["canNotBeEmpty"]=array();
2935
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
2936
		#$conf["canBeEmpty"]=array();
2937
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
2938
		#$conf["skipableVariableCanNotBeEmpty"]=array();
2939
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2940
		#$conf["skipableVariableName"]=array();
2941
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2942
		#$conf["skipableVariableType"]=array();
2943
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2944
		#$conf["skipableVarDefaultValue"]=array("");
2945
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
2946
		#$conf["disallowAllSkipableVarIsEmpty"]="";
2947
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
2948
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
2949
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
2950
		#$conf["disallowAllSkipableVarNotExist"]="";
2951
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2952
		#$conf["arrayCountEqualCheck"][]=array();
2953
		#參考資料:
2954
		#array_keys=>http://php.net/manual/en/function.array-keys.php
2955
		#備註:
2956
		#無.
2957
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2958
		unset($conf["variableCheck::checkArguments"]);
2959
 
2960
		#如果檢查失敗
2961
		if($checkArguments["status"]=="false"){
2962
 
2963
			#設置錯誤識別
2964
			$result["status"]="false";
2965
 
2966
			#設置錯誤訊息
2967
			$result["error"]=$checkArguments;
2968
 
2969
			#回傳結果
2970
			return $result;
2971
 
2972
			}#if end
2973
 
2974
		#如果檢查不通過
2975
		if($checkArguments["passed"]=="false"){
2976
 
2977
			#設置錯誤識別
2978
			$result["status"]="false";
2979
 
2980
			#設置錯誤訊息
2981
			$result["error"]=$checkArguments;
2982
 
2983
			#回傳結果
2984
			return $result;
2985
 
2986
			}#if end
2987
 
2988
		#針對每個關鍵字
2989
		foreach($conf["keyWords"] as $keyWord){
2990
 
2991
			#函式說明:
2992
			#取得關鍵字在字串的哪個位置(字首,字尾,中間)
2993
			#回傳結果:
2994
			#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
2995
			#$result["error"],錯誤訊息陣列.
2996
			#$result["function"],當前執行的函數名稱.
2997
			#$result["argu"],傳入的參數.
2998
			#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
2999
			#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
3000
			#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
3001
			#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
3002
			#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
3003
			#必填參數:
3004
			#$conf["inputStr"],字串,被搜尋的字串.
3005
			$conf["search::findKeyWordPosition"]["inputStr"]=$conf["inputStr"];
3006
			#$conf["keyWord"],字串,關鍵字.
3007
			$conf["search::findKeyWordPosition"]["keyWord"]=$keyWord;
3008
			#可省略參數:
3009
			#無.
3010
			#參考資料:
3011
			#http://php.net/manual/en/function.strpos.php
3012
			#備註:
3013
			#無.
3014
			$findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
3015
			unset($conf["search::findKeyWordPosition"]);
3016
 
3017
			#如果檢查失敗
3018
			if($findKeyWordPosition["status"]=="false"){
3019
 
3020
				#設置錯誤識別
3021
				$result["status"]="false";
3022
 
3023
				#設置錯誤訊息
3024
				$result["error"]=$findKeyWordPosition;
3025
 
3026
				#回傳結果
3027
				return $result;
3028
 
3029
				}#if end
3030
 
3031
			#取得head的結果
3032
			$result["head"][]=$findKeyWordPosition["head"];
3033
 
3034
			#取得center的結果
3035
			$result["center"][]=$findKeyWordPosition["center"];
3036
 
3037
			#取得tail的結果
3038
			$result["tail"][]=$findKeyWordPosition["tail"];
3039
 
3040
			#取得indexS的結果
3041
			$result["indexS"][]=$findKeyWordPosition["indexS"];
3042
 
3043
			#取得indexE的結果
3044
			$result["indexE"][]=$findKeyWordPosition["indexE"];
3045
 
3046
			}#foreach end
3047
 
3048
		#設置執行正常
3049
		$result["status"]="true";
3050
 
3051
		#回傳結果
3052
		return $result;
3053
 
3054
		}#function findKeyWordsPosition end
3055
 
3056
	/*
3057
	#函式說明:
3058
	#取得兩關鍵字中的內容. 
3059
	#回傳結果:
3060
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3061
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3062
	#$result["function"],當前執行的函式名稱.
3063
	#$result["content"],兩關鍵字中的內容.
3064
	#$result["argu"],所使用的參數.
3065
	#必填參數:
3066
	#$conf["input"],字串,要解析的字串.
3067
	$conf["input"]="";
3068
	#$conf["leftKeyWord"],字串,左邊的關鍵字.
3069
	$conf["leftKeyWord"]="";
3070
	#$conf["rightKeyWord"],字串,右邊的關鍵字.
3071
	$conf["rightKeyWord"]="";
3072
	#可省略參數:
3073
	#無
3074
	#參考資料:
3075
	#無.
3076
	#備註:
3077
	#無.
3078
	*/
3079
	public static function getContentBetweenKeyWord(&$conf){
3080
 
3081
		#初始化要回傳的結果
3082
		$result=array();
3083
 
3084
		#取得當前執行的函數名稱
3085
		$result["function"]=__FUNCTION__;
3086
 
3087
		#如果沒有參數
3088
		if(func_num_args()==0){
3089
 
3090
			#設置執行失敗
3091
			$result["status"]="false";
3092
 
3093
			#設置執行錯誤訊息
3094
			$result["error"]="函數".$result["function"]."需要參數";
3095
 
3096
			#回傳結果
3097
			return $result;
3098
 
3099
			}#if end
3100
 
3101
		#取得參數
3102
		$result["argu"]=$conf;
3103
 
3104
		#如果 $conf 不為陣列
3105
		if(gettype($conf)!=="array"){
3106
 
3107
			#設置執行失敗
3108
			$result["status"]="false";
3109
 
3110
			#設置執行錯誤訊息
3111
			$result["error"][]="\$conf變數須為陣列形態";
3112
 
3113
			#如果傳入的參數為 null
3114
			if($conf===null){
3115
 
3116
				#設置執行錯誤訊息
3117
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3118
 
3119
				}#if end
3120
 
3121
			#回傳結果
3122
			return $result;
3123
 
3124
			}#if end
3125
 
3126
		#函式說明:
3127
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3128
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3129
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3130
		#$result["function"],當前執行的函式名稱.
3131
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3132
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3133
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3134
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3135
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3136
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3137
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3138
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3139
		#必填寫的參數:
3140
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3141
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3142
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3143
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","leftKeyWord","rightKeyWord");
3144
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
3145
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
3146
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3147
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3148
		#可以省略的參數:
3149
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3150
		#$conf["canBeEmptyString"]="false";
3151
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3152
		#$conf["canNotBeEmpty"]=array();
3153
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3154
		#$conf["canBeEmpty"]=array();
3155
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3156
		#$conf["skipableVariableCanNotBeEmpty"]=array();
3157
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3158
		#$conf["skipableVariableName"]=array();
3159
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3160
		#$conf["skipableVariableType"]=array();
3161
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3162
		#$conf["skipableVarDefaultValue"]=array("");
3163
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3164
		#$conf["arrayCountEqualCheck"][]=array();
3165
		#參考資料來源:
3166
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3167
		#建議:
3168
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
3169
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3170
		unset($conf["variableCheck::checkArguments"]);
3171
 
3172
		#如果檢查參數失敗
3173
		if($checkArguments["status"]==="false"){
3174
 
3175
			#設置執行失敗
3176
			$result["status"]="false";
3177
 
3178
			#設置執行錯誤訊息
3179
			$result["error"]=$checkArguments;
3180
 
3181
			#回傳結果
3182
			return $result;
3183
 
3184
			}#if end
3185
 
3186
		#如果檢查參數不通過
3187
		if($checkArguments["passed"]==="false"){
3188
 
3189
			#設置執行失敗
3190
			$result["status"]="false";
3191
 
3192
			#設置執行錯誤訊息
3193
			$result["error"]=$checkArguments;
3194
 
3195
			#回傳結果
3196
			return $result;
3197
 
3198
			}#if end
3199
 
3200
		#函式說明:
3201
		#將字串特定關鍵字與其前面的內容剔除
3202
		#回傳結果:
3203
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3204
		#$result["error"],錯誤訊息陣列.
3205
		#$result["warning"],警告訊息鎮列.
3206
		#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
3207
		#$result["function"],當前執行的函數名稱.
3208
		#$result["oriStr"],要處理的原始字串內容.
3209
		#$result["content"],處理好的的字串內容.
3210
		#必填參數:
3211
		$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$conf["input"];#要處理的字串.
3212
		$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$conf["leftKeyWord"];#特定字串.
3213
		$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
3214
		unset($conf["stringProcess::delStrBeforeKeyWord"]);
3215
 
3216
		#如果移除關鍵字前的內容失敗
3217
		if($delStrBeforeKeyWord["status"]==="false"){
3218
 
3219
			#設置執行失敗
3220
			$result["status"]="false";
3221
 
3222
			#設置執行錯誤訊息
3223
			$result["error"]=$delStrBeforeKeyWord;
3224
 
3225
			#回傳結果
3226
			return $result;
3227
 
3228
			}#if end
3229
 
3230
		#如果沒有指定關鍵字
3231
		if($delStrBeforeKeyWord["founded"]==="false"){
3232
 
3233
			#設置執行失敗
3234
			$result["status"]="false";
3235
 
3236
			#設置執行錯誤訊息
3237
			$result["error"]=$delStrBeforeKeyWord;
3238
 
3239
			#回傳結果
3240
			return $result;
3241
 
3242
			}#if end
3243
 
3244
		#取得處理好的字串
3245
		$parsedStr=$delStrBeforeKeyWord["content"];
3246
 
3247
		#函式說明:
3248
		#將字串特定關鍵字與其後面的內容剔除
3249
		#回傳結果:
3250
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3251
		#$result["error"],錯誤訊息陣列.
3252
		#$result["warning"],警告訊息鎮列.
3253
		#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
3254
		#$result["function"],當前執行的函數名稱.
3255
		#$result["oriStr"],要處理的原始字串內容.
3256
		#$result["content"],處理好的的字串內容.
3257
		#必填參數:
3258
		$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$parsedStr;#要處理的字串.
3259
		$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]=$conf["rightKeyWord"];#特定字串.
3260
		$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
3261
		unset($conf["stringProcess::delStrAfterKeyWord"]);	
3262
 
3263
		#如果移除關鍵字後的內容失敗
3264
		if($delStrAfterKeyWord["status"]==="false"){
3265
 
3266
			#設置執行失敗
3267
			$result["status"]="false";
3268
 
3269
			#設置執行錯誤訊息
3270
			$result["error"]=$delStrAfterKeyWord;
3271
 
3272
			#回傳結果
3273
			return $result;
3274
 
3275
			}#if end
3276
 
3277
		#如果沒有指定關鍵字
3278
		if($delStrAfterKeyWord["founded"]==="false"){
3279
 
3280
			#設置執行失敗
3281
			$result["status"]="false";
3282
 
3283
			#設置執行錯誤訊息
3284
			$result["error"]=$delStrAfterKeyWord;
3285
 
3286
			#回傳結果
3287
			return $result;
3288
 
3289
			}#if end
3290
 
3291
		#取得處理好的字串
3292
		$parsedStr=$delStrAfterKeyWord["content"];	
3293
 
3294
		#取得中間的內容
3295
		$result["content"]=$parsedStr;
3296
 
3297
		#設置執行正常
3298
		$result["status"]="true";
3299
 
3300
		#回傳結果
3301
		return $result;
3302
 
3303
		}#function getContentBetweenKeyWord end
3304
 
3305
	/*
3306
	#函式說明:
3307
	#尋找檔案裡面有無關鍵字存在,取得其所在列數與內容.
3308
	#回傳結果:
3309
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3310
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3311
	#$result["function"],當前執行的函式名稱.
3312
	#$result["argu"],所使用的參數.
3313
	#$result["founded"],是否有找到關鍵字,"true"代表有找到,"false"代表沒有找到.
3314
	#$result["content"],符合的列數與內容.
3315
	#$result["content"][$i]["LN"],第$i+1個符合條件的列數.
3316
	#$result["content"][$i]["LC"],第$i+1個符合條件的列內容.
3317
	#必填參數:
3318
	#$conf["fileAddr"],字串,檔案的路徑與名稱.
3319
	$conf["fileAddr"]="";
3320
	#$conf["keyWord"],字串,要搜尋的關鍵字.
3321
	$conf["keyWord"]="";
3322
	#$conf["fileArgu"],字串,__FILE__的內容
3323
	$conf["fileArgu"]=__FILE__;
3324
	#可省略參數:
3325
	#無.
3326
	#參考資料:
3327
	#無.
3328
	#備註:
3329
	#無.
3330
	*/
3331
	public static function findKeyWordInFile(&$conf){
3332
 
3333
		#初始化要回傳的結果
3334
		$result=array();
3335
 
3336
		#取得當前執行的函數名稱
3337
		$result["function"]=__FUNCTION__;
3338
 
3339
		#如果沒有參數
3340
		if(func_num_args()==0){
3341
 
3342
			#設置執行失敗
3343
			$result["status"]="false";
3344
 
3345
			#設置執行錯誤訊息
3346
			$result["error"]="函數".$result["function"]."需要參數";
3347
 
3348
			#回傳結果
3349
			return $result;
3350
 
3351
			}#if end		
3352
 
3353
		#取得參數
3354
		$result["argu"]=$conf;
3355
 
3356
		#如果 $conf 不為陣列
3357
		if(gettype($conf)!=="array"){
3358
 
3359
			#設置執行失敗
3360
			$result["status"]="false";
3361
 
3362
			#設置執行錯誤訊息
3363
			$result["error"][]="\$conf變數須為陣列形態";
3364
 
3365
			#如果傳入的參數為 null
3366
			if($conf===null){
3367
 
3368
				#設置執行錯誤訊息
3369
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3370
 
3371
				}#if end
3372
 
3373
			#回傳結果
3374
			return $result;
3375
 
3376
			}#if end
3377
 
3378
		#檢查參數
3379
		#函式說明:
3380
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3381
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3382
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3383
		#$result["function"],當前執行的函式名稱.
3384
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3385
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3386
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3387
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3388
		#必填寫的參數:
3389
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3390
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3391
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3392
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("fileAddr","keyWord","fileArgu");
3393
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
3394
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string","string");
3395
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3396
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3397
		#可以省略的參數:
3398
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3399
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
3400
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3401
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","port","title","fullScreen","spicePassword");
3402
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3403
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
3404
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3405
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"false",null);
3406
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3407
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
3408
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3409
		unset($conf["variableCheck::checkArguments"]);
3410
 
3411
		#如果檢查參數失敗
3412
		if($checkResult["status"]=="false"){
3413
 
3414
			#設置執行失敗
3415
			$result["status"]="false";
3416
 
3417
			#設置執行錯誤
3418
			$result["error"]=$checkResult;
3419
 
3420
			#回傳結果
3421
			return $result;
3422
 
3423
			}#if end
3424
 
3425
		#如果檢查參數不通過
3426
		if($checkResult["passed"]=="false"){
3427
 
3428
			#設置執行失敗
3429
			$result["status"]="false";
3430
 
3431
			#設置執行錯誤
3432
			$result["error"]=$checkResult;
3433
 
3434
			#回傳結果
3435
			return $result;
3436
 
3437
			}#if end
3438
 
3439
		#轉換檔案路徑為相對於當前位置的路徑
3440
		#函數說明:
3441
		#將檔案的位置名稱變成網址,也可以取得檔案位於伺服器上檔案系統的絕對位置.
3442
		#回傳結果:
3443
		#$result["status"],"true"爲建立成功,"false"爲建立失敗.
3444
		#$result["error"],錯誤訊息陣列.
3445
		#$result["function"],函數名稱. 
3446
		#$result["content"],網址,若是在命令列執行,則為"null".
3447
		#$result["webPathFromRoot"],相對於網頁根目錄的路徑.
3448
		#$result["fileSystemAbsoulutePosition"],針對伺服器端的絕對位置,亦即從網頁「/」目錄開始的路徑.
3449
		#$result["fileSystemRelativePosition"],針對伺服器檔案系統的相對位置.
3450
		#必填參數:
3451
		#$conf["address"],字串,檔案的相對位置,若為絕對位置則會自動轉換成相對位置.
3452
		$conf["fileAccess::getInternetAddress"]["address"]=$conf["fileAddr"];
3453
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑.
3454
		$conf["fileAccess::getInternetAddress"]["fileArgu"]=$conf["fileArgu"];
3455
		#可省略參數:
3456
		#$conf["userDir"],字串,網頁是否置放於家目錄底下,"true"為是,"false"為不是,預設為"true".
3457
		#$conf["userDir"]="true";
3458
		#備註:
3459
		#在命令列執行,所得的路徑是錯誤的。
3460
		$getInternetAddress=fileAccess::getInternetAddress($conf["fileAccess::getInternetAddress"]);
3461
		unset($conf["fileAccess::getInternetAddress"]);
3462
 
3463
		#如果解析檔案位置失敗
3464
		if($getInternetAddress["status"]==="false"){
3465
 
3466
			#設置執行失敗
3467
			$result["status"]="false";
3468
 
3469
			#設置執行錯誤
3470
			$result["error"]=$getInternetAddress;
3471
 
3472
			#回傳結果
3473
			return $result;
3474
 
3475
			}#if end
3476
 
3477
		#取得檔案的相對位置
3478
		$fileRelativeAddr=$getInternetAddress["fileSystemRelativePosition"];
3479
 
3480
		#取得檔案的絕對位置
3481
		$fileAbsolute=$getInternetAddress["fileSystemAbsoulutePosition"];		
3482
 
3483
		#讀取檔案內容
3484
		#函式說明:
3485
		#依據行號分隔抓取檔案的內容,結果會回傳一個陣列
3486
		#回傳的變數說明:
3487
		#$result["status"],執行是否成功,"true"代表成功;"fasle"代表失敗.
3488
		#$result["error"],錯誤訊息提示.
3489
		#$result["warning"],警告訊息.
3490
		#$result["function"],當前執行的函數名稱.
3491
		#$result["fileContent"],爲檔案的內容陣列.
3492
		#$result["lineCount"],爲檔案內容總共的行數.
3493
		#$result["fullContent"],為檔案的完整內容.
3494
		#必填參數:
3495
		#$conf["filePositionAndName"],字串,爲檔案的位置以及名稱.
3496
		$conf["fileAccess::getFileContent"]["filePositionAndName"]=$fileAbsolute;
3497
		#$conf["fileArgu"],字串,php變數__FILE__的內容,亦即該檔案在檔案系統的絕對路徑
3498
		$conf["fileAccess::getFileContent"]["fileArgu"]=$conf["fileArgu"];
3499
		#參考資料:
3500
		#file(),取得檔案內容的行數.
3501
		#file=>http:#php.net/manual/en/function.file.php
3502
		#rtrim(),剔除透過file()取得每行內容結尾的換行符號.
3503
		#filesize=>http://php.net/manual/en/function.filesize.php
3504
		$getFileContent=fileAccess::getFileContent($conf["fileAccess::getFileContent"]);
3505
		unset($conf["fileAccess::getFileContent"]);
3506
 
3507
		#如果讀取檔案內容失敗
3508
		if($getFileContent["status"]==="false"){
3509
 
3510
			#設置執行失敗
3511
			$result["status"]="false";
3512
 
3513
			#設置執行錯誤
3514
			$result["error"]=$getInternetAddress;
3515
 
3516
			#回傳結果
3517
			return $result;
3518
 
3519
			}#if end
3520
 
3521
		#設置沒有找到關鍵字
3522
		$result["founded"]="false";
3523
 
3524
		#針對每列內容
3525
		foreach($getFileContent["fileContent"] as $LN=>$LC){
3526
 
3527
			#搜尋含有關鍵字的列數	
3528
			$searchResult=strpos($LC,$conf["keyWord"]);
3529
 
3530
			#如果有搜尋到內容
3531
			if($searchResult!==false){
3532
 
3533
				#記錄列數
3534
				$res["LN"]=$LN;
3535
 
3536
				#記錄內容
3537
				$res["LC"]=$LC;				
3538
 
3539
				#儲存到要回傳的內容
3540
				$result[]=$res;
3541
 
3542
				#設置有找到關鍵字
3543
				$result["founded"]="true";
3544
 
3545
				}#if end
3546
 
3547
			}#foreach end
3548
 
3549
		#設置執行正常
3550
		$result["status"]="true";
3551
 
3552
		#回傳結果
3553
		return $result;
3554
 
3555
		}#function findKeyWordInFile end
3556
 
3557
	/*
3558
	#函式說明:
3559
	#尋找字串是否存在對應的關鍵字,且符合的最常關鍵字為何?
3560
	#回傳結果:
3561
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3562
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3563
	#$result["function"],當前執行的函式名稱.
3564
	#$result["argu"],所使用的參數.
3565
	#$result["founded"],是否有找到關鍵字,"true"代表有找到,"false"代表沒有找到.
3566
	#$result["content"],最符合的字串完整內容.
3567
	#必填參數:
3568
	#$conf["input"],字串,要比對的字串.
3569
	$conf["input"]="";
3570
	#$conf["keyWord"],字串陣列,要搜尋的關鍵字.
3571
	$conf["keyWord"]=array("");
3572
	#可省略參數:
3573
	#無.
3574
	#參考資料:
3575
	#無.
3576
	#備註:
3577
	#無.
3578
	*/
3579
	public static function findLikelyStr(&$conf){
3580
 
3581
		#初始化要回傳的結果
3582
		$result=array();
3583
 
3584
		#取得當前執行的函數名稱
3585
		$result["function"]=__FUNCTION__;
3586
 
3587
		#如果沒有參數
3588
		if(func_num_args()==0){
3589
 
3590
			#設置執行失敗
3591
			$result["status"]="false";
3592
 
3593
			#設置執行錯誤訊息
3594
			$result["error"]="函數".$result["function"]."需要參數";
3595
 
3596
			#回傳結果
3597
			return $result;
3598
 
3599
			}#if end		
3600
 
3601
		#取得參數
3602
		$result["argu"]=$conf;
3603
 
3604
		#如果 $conf 不為陣列
3605
		if(gettype($conf)!=="array"){
3606
 
3607
			#設置執行失敗
3608
			$result["status"]="false";
3609
 
3610
			#設置執行錯誤訊息
3611
			$result["error"][]="\$conf變數須為陣列形態";
3612
 
3613
			#如果傳入的參數為 null
3614
			if($conf===null){
3615
 
3616
				#設置執行錯誤訊息
3617
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3618
 
3619
				}#if end
3620
 
3621
			#回傳結果
3622
			return $result;
3623
 
3624
			}#if end
3625
 
3626
		#檢查參數
3627
		#函式說明:
3628
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3629
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3630
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3631
		#$result["function"],當前執行的函式名稱.
3632
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3633
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3634
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3635
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3636
		#必填寫的參數:
3637
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3638
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3639
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3640
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","keyWord");
3641
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
3642
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
3643
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3644
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3645
		#可以省略的參數:
3646
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3647
		$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
3648
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3649
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","port","title","fullScreen","spicePassword");
3650
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3651
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
3652
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3653
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"false",null);
3654
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3655
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
3656
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3657
		unset($conf["variableCheck::checkArguments"]);
3658
 
3659
		#如果檢查參數失敗
3660
		if($checkResult["status"]=="false"){
3661
 
3662
			#設置執行失敗
3663
			$result["status"]="false";
3664
 
3665
			#設置執行錯誤
3666
			$result["error"]=$checkResult;
3667
 
3668
			#回傳結果
3669
			return $result;
3670
 
3671
			}#if end
3672
 
3673
		#如果檢查參數不通過
3674
		if($checkResult["passed"]=="false"){
3675
 
3676
			#設置執行失敗
3677
			$result["status"]="false";
3678
 
3679
			#設置執行錯誤
3680
			$result["error"]=$checkResult;
3681
 
3682
			#回傳結果
3683
			return $result;
3684
 
3685
			}#if end
3686
 
3687
		#暫存符合的關鍵字
3688
		$tmp="";
3689
 
3690
		#初始化未找到符合的關鍵字
3691
		$result["found"]="false";
3692
 
3693
		#真對每個關鍵字
3694
		foreach($conf["keyWord"] as $keyWord){
3695
 
3696
			#如果關鍵字為 ""
3697
			if($keyWord===""){
3698
 
3699
				#跳過
3700
				continue;
3701
 
3702
				}#if end
3703
 
3704
			#如果有符合的開頭關鍵字.
3705
			if(strpos($conf["input"],$keyWord)===0){
3706
 
3707
				#如果 $keyWord 大於已符合的關鍵字
3708
				if(strlen($keyWord)>strlen($tmp)){
3709
 
3710
					#記錄起來
3711
					$tmp=$keyWord;
3712
 
3713
					#設置有找到關鍵字
3714
					$result["found"]="true";
3715
 
3716
					}#if end
3717
 
3718
				}#if end
3719
 
3720
			}#foreach end	
3721
 
3722
		#設置找到的關鍵字
3723
		$result["content"]=$tmp;
3724
 
3725
		#設置執行正常
3726
		$result["status"]="true";
3727
 
3728
		#回傳結果
3729
		return $result;
3730
 
3731
		}#function find LikelyStr end
3732
 
3733
	/*
3734
	#函式說明:
3735
	#尋找陣列中有無符合的key
3736
	#回傳結果:
3737
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3738
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3739
	#$result["function"],當前執行的函式名稱.
3740
	#$result["argu"],所使用的參數.
3741
	#$result["founded"],是否有找到關鍵字,"true"代表有找到,"false"代表沒有找到.
3742
	#必填參數:
3743
	#$conf["key"],字串,要尋找的key.
3744
	$conf["key"]="";
3745
	#$conf["array"],陣列,要被搜尋的陣列.	
3746
	$conf["array"]=array();	
3747
	#可省略參數:
3748
	#無.
3749
	#參考資料:
3750
	#無.
3751
	#備註:
3752
	#無.
3753
	*/	
3754
	public static function findKeyInArray(&$conf){
3755
 
3756
		#初始化要回傳的結果
3757
		$result=array();
3758
 
3759
		#取得當前執行的函數名稱
3760
		$result["function"]=__FUNCTION__;
3761
 
3762
		#如果沒有參數
3763
		if(func_num_args()==0){
3764
 
3765
			#設置執行失敗
3766
			$result["status"]="false";
3767
 
3768
			#設置執行錯誤訊息
3769
			$result["error"]="函數".$result["function"]."需要參數";
3770
 
3771
			#回傳結果
3772
			return $result;
3773
 
3774
			}#if end		
3775
 
3776
		#取得參數
3777
		$result["argu"]=$conf;
3778
 
3779
		#如果 $conf 不為陣列
3780
		if(gettype($conf)!=="array"){
3781
 
3782
			#設置執行失敗
3783
			$result["status"]="false";
3784
 
3785
			#設置執行錯誤訊息
3786
			$result["error"][]="\$conf變數須為陣列形態";
3787
 
3788
			#如果傳入的參數為 null
3789
			if($conf===null){
3790
 
3791
				#設置執行錯誤訊息
3792
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3793
 
3794
				}#if end
3795
 
3796
			#回傳結果
3797
			return $result;
3798
 
3799
			}#if end
3800
 
3801
		#檢查參數
3802
		#函式說明:
3803
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
3804
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3805
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
3806
		#$result["function"],當前執行的函式名稱.
3807
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3808
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3809
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3810
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
3811
		#必填寫的參數:
3812
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3813
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3814
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3815
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("key","array");
3816
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
3817
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
3818
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3819
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3820
		#可以省略的參數:
3821
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
3822
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
3823
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3824
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","port","title","fullScreen","spicePassword");
3825
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
3826
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
3827
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3828
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"false",null);
3829
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
3830
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
3831
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3832
		unset($conf["variableCheck::checkArguments"]);
3833
 
3834
		#如果檢查參數失敗
3835
		if($checkResult["status"]=="false"){
3836
 
3837
			#設置執行失敗
3838
			$result["status"]="false";
3839
 
3840
			#設置執行錯誤
3841
			$result["error"]=$checkResult;
3842
 
3843
			#回傳結果
3844
			return $result;
3845
 
3846
			}#if end
3847
 
3848
		#如果檢查參數不通過
3849
		if($checkResult["passed"]=="false"){
3850
 
3851
			#設置執行失敗
3852
			$result["status"]="false";
3853
 
3854
			#設置執行錯誤
3855
			$result["error"]=$checkResult;
3856
 
3857
			#回傳結果
3858
			return $result;
3859
 
3860
			}#if end
3861
 
3862
		#初始設置沒有找到對應的key
3863
		$result["founded"]="false";
3864
 
3865
		#針對每個陣列元素
3866
		foreach($conf["array"] as $key=>$val){
3867
 
3868
			#debug
3869
			#var_dump($key);var_dump($conf["key"]);
3870
 
3871
			#如果找到相同的key
3872
			if((string)$key===$conf["key"]){
3873
 
3874
				#設置有找到對應的key
3875
				$result["founded"]="true";
3876
 
3877
				#結束執行
3878
				break;
3879
 
3880
				}#if end
3881
 
3882
			}#foreach ebd
3883
 
3884
		#設置執行正常
3885
		$result["status"]="true";
3886
 
3887
		#回傳結果
3888
		return $result;
3889
 
3890
		}#function findKeyInArray end
3891
 
3892
	/*
3893
	#函式說明:
3894
	#判斷字串是否都為同一內容組成.
3895
	#回傳結果:
3896
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3897
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
3898
	#$result["function"],當前執行的函式名稱.
3899
	#$result["argu"],所使用的參數.
3900
	#$result["equal"],判斷是否字串是都為同一字串組成,"true"代表是,"false"代表不是.
3901
	#必填參數:
3902
	#$conf["input"],字串,要檢查的字串.
3903
	$conf["input"]="";
3904
	#$conf["keyWord"],字串,要判斷為什麼相同的字串組成.
3905
	$conf["keyWord"]="";
3906
	#可省略參數:
3907
	#無.
3908
	#參考資料:
3909
	#無.
3910
	#備註:
3911
	#無.
3912
	*/
3913
	public static function checkStrEqual(&$conf){
3914
 
3915
		#初始化要回傳的結果
3916
		$result=array();
3917
 
3918
		#取得當前執行的函數名稱
3919
		$result["function"]=__FUNCTION__;
3920
 
3921
		#如果沒有參數
3922
		if(func_num_args()==0){
3923
 
3924
			#設置執行失敗
3925
			$result["status"]="false";
3926
 
3927
			#設置執行錯誤訊息
3928
			$result["error"]="函數".$result["function"]."需要參數";
3929
 
3930
			#回傳結果
3931
			return $result;
3932
 
3933
			}#if end
3934
 
3935
		#取得參數
3936
		$result["argu"]=$conf;
3937
 
3938
		#如果 $conf 不為陣列
3939
		if(gettype($conf)!=="array"){
3940
 
3941
			#設置執行失敗
3942
			$result["status"]="false";
3943
 
3944
			#設置執行錯誤訊息
3945
			$result["error"][]="\$conf變數須為陣列形態";
3946
 
3947
			#如果傳入的參數為 null
3948
			if(is_null($conf)){
3949
 
3950
				#設置執行錯誤訊息
3951
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
3952
 
3953
				}#if end
3954
 
3955
			#回傳結果
3956
			return $result;
3957
 
3958
			}#if end
3959
 
3960
		#函式說明:
3961
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
3962
		#回傳結果:
3963
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
3964
		#$result["error"],執行不正常結束的錯訊息陣列.
3965
		#$result["simpleError"],簡單表示的錯誤訊息.
3966
		#$result["function"],當前執行的函式名稱.
3967
		#$result["argu"],設置給予的參數.
3968
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
3969
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
3970
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
3971
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
3972
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
3973
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
3974
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
3975
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
3976
		#必填參數:
3977
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
3978
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
3979
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
3980
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
3981
		#可省略參數:
3982
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
3983
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","keyWord");
3984
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
3985
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
3986
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
3987
		#$conf["canBeEmptyString"]="false";
3988
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
3989
		#$conf["canNotBeEmpty"]=array();
3990
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
3991
		#$conf["canBeEmpty"]=array();
3992
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
3993
		#$conf["skipableVariableCanNotBeEmpty"]=array();
3994
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
3995
		#$conf["skipableVariableName"]=array();
3996
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
3997
		#$conf["skipableVariableType"]=array();
3998
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
3999
		#$conf["skipableVarDefaultValue"]=array("");
4000
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4001
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4002
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4003
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4004
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
4005
		#$conf["disallowAllSkipableVarNotExist"]="";
4006
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
4007
		#$conf["arrayCountEqualCheck"][]=array();
4008
		#參考資料:
4009
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4010
		#備註:
4011
		#無.
4012
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4013
		unset($conf["variableCheck::checkArguments"]);
4014
 
4015
		#如果執行失敗
4016
		if($checkArguments["status"]==="false"){
4017
 
4018
			#設置錯誤訊息
4019
			$result["error"]=$checkArguments;
4020
 
4021
			#設置執行錯誤
4022
			$result["status"]="false";
4023
 
4024
			#回傳結果
4025
			return $result;
4026
 
4027
			}#if end
4028
 
4029
		#如果檢查不通過
4030
		if($checkArguments["passed"]==="false"){
4031
 
4032
			#設置錯誤訊息
4033
			$result["error"]=$checkArguments;
4034
 
4035
			#設置執行錯誤
4036
			$result["status"]="false";
4037
 
4038
			#回傳結果
4039
			return $result;
4040
 
4041
			}#if end
4042
 
4043
		#函式說明:
4044
		#將字串特定關鍵字與其前面的內容剔除
4045
		#回傳結果:
4046
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4047
		#$result["error"],錯誤訊息陣列.
4048
		#$result["warning"],警告訊息鎮列.
4049
		#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4050
		#$result["function"],當前執行的函數名稱.
4051
		#$result["argu"],使用的參數.
4052
		#$result["oriStr"],要處理的原始字串內容.
4053
		#$result["content"],處理好的的字串內容.
4054
		#$result["deleted"],被移除的內容.
4055
		#必填參數:
4056
		#$conf["stringIn"],字串,要處理的字串.
4057
		$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$conf["input"];
4058
		#$conf["keyWord"],字串,特定字串.
4059
		$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$conf["keyWord"];
4060
		#可省略參數:
4061
		#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
4062
		$conf["stringProcess::delStrBeforeKeyWord"]["recursive"]="true";
4063
		#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
4064
		#$conf["lastResult"]=$delStrBeforeKeyWord;
4065
		#參考資料:
4066
		#無.
4067
		#備註:
4068
		#無.
4069
		$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4070
		unset($conf["stringProcess::delStrBeforeKeyWord"]);
4071
 
4072
		#如果執行失敗
4073
		if($delStrBeforeKeyWord["status"]==="false"){
4074
 
4075
			#設置錯誤識別
4076
			$result["status"]="false";
4077
 
4078
			#設置錯誤訊息
4079
			$result["error"]=$delStrBeforeKeyWord;
4080
 
4081
			#回傳結果
4082
			return $result;
4083
 
4084
			}#if end
4085
 
4086
		#預設沒有符合
4087
		$result["equal"]="false";
4088
 
4089
		#如果有找到關鍵字
4090
		if($delStrBeforeKeyWord["founded"]==="true"){
4091
 
4092
			#若處理好的內容為"",則代表變數名稱是否都為 "$conf["keyWord"]" 所組成
4093
			if($delStrBeforeKeyWord["content"]===""){
4094
 
4095
				#設置有符合
4096
				$result["equal"]="true";
4097
 
4098
				}#if end
4099
 
4100
			}#if end
4101
 
4102
		#設置執行正常
4103
		$result["status"]="true";
4104
 
4105
		#回傳結果
4106
		return $result;	
4107
 
4108
		}#function checkStrEqual end
4109
 
4110
	/*
4111
	#函式說明:
4112
	#尋找字串中是否含有符合格式的內容,且回傳解析好的變數數值.
4113
	#回傳結果:
4114
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4115
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
4116
	#$result["function"],當前執行的函式名稱.
4117
	#$result["argu"],所使用的參數.
4118
	#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
4119
	#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
4120
	#$result["parsedVar"][varName],陣列,解析好的變數陣列,varName為${}中的內容.
4121
	#必填參數:
4122
	#$conf["input"],字串,要檢查的字串.
4123
	$conf["input"]="";
66 liveuser 4124
	#$conf["format"],格式字串,要尋找的格式字串.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
3 liveuser 4125
	$conf["format"]="";
4126
	#可省略參數:
66 liveuser 4127
	#$conf["varEqual"],陣列,變數對應的數值,null代表不指定,其他內容代表該變數解析出來必須要為該內容.
4128
	#$conf["varEqual"]=array(null,"found");
4129
	#$conf["varCon"],陣列,每個varEqual為null者,其是否有其他條件,預設為null代表無其他條件,條件的表示是用陣列的key與value來表達,例如:array("no_tail"=>" not"),就代表變數的結尾不能為" not",可以用的key有"head",代表開頭要有什麼;"no_head",代表不能為什麼開頭;"tail",代表要什麼結尾;"no_tail",代表不能什麼結尾.
4130
	#$conf["varCon"]=array("no_tail"=>" not");
3 liveuser 4131
	#參考資料:
4132
	#無.
4133
	#備註:
66 liveuser 4134
	#無.
3 liveuser 4135
	*/
4136
	public static function findSpecifyStrFormat(&$conf){
4137
 
4138
		#初始化要回傳的結果
4139
		$result=array();
4140
 
4141
		#取得當前執行的函數名稱
4142
		$result["function"]=__FUNCTION__;
4143
 
4144
		#如果沒有參數
4145
		if(func_num_args()==0){
4146
 
4147
			#設置執行失敗
4148
			$result["status"]="false";
4149
 
4150
			#設置執行錯誤訊息
4151
			$result["error"]="函數".$result["function"]."需要參數";
4152
 
4153
			#回傳結果
4154
			return $result;
4155
 
4156
			}#if end
4157
 
4158
		#取得參數
4159
		$result["argu"]=$conf;
4160
 
4161
		#如果 $conf 不為陣列
4162
		if(gettype($conf)!=="array"){
4163
 
4164
			#設置執行失敗
4165
			$result["status"]="false";
4166
 
4167
			#設置執行錯誤訊息
4168
			$result["error"][]="\$conf變數須為陣列形態";
4169
 
4170
			#如果傳入的參數為 null
4171
			if(is_null($conf)){
4172
 
4173
				#設置執行錯誤訊息
4174
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
4175
 
4176
				}#if end
4177
 
4178
			#回傳結果
4179
			return $result;
4180
 
4181
			}#if end
4182
 
4183
		#函式說明:
4184
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4185
		#回傳結果:
4186
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4187
		#$result["error"],執行不正常結束的錯訊息陣列.
4188
		#$result["simpleError"],簡單表示的錯誤訊息.
4189
		#$result["function"],當前執行的函式名稱.
4190
		#$result["argu"],設置給予的參數.
4191
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4192
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4193
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4194
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4195
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4196
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4197
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4198
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4199
		#必填參數:
4200
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4201
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
4202
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4203
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4204
		#可省略參數:
4205
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4206
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","format");
4207
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
4208
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","string");
4209
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4210
		#$conf["canBeEmptyString"]="false";
4211
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4212
		#$conf["canNotBeEmpty"]=array();
4213
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4214
		#$conf["canBeEmpty"]=array();
4215
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4216
		#$conf["skipableVariableCanNotBeEmpty"]=array();
4217
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
66 liveuser 4218
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("varEqual","varCon");
3 liveuser 4219
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
66 liveuser 4220
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array","array");
3 liveuser 4221
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
66 liveuser 4222
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null);
3 liveuser 4223
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4224
		#$conf["disallowAllSkipableVarIsEmpty"]="";
4225
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
4226
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
4227
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
4228
		#$conf["disallowAllSkipableVarNotExist"]="";
4229
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
66 liveuser 4230
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array("varEqual","varCon");
3 liveuser 4231
		#參考資料:
4232
		#array_keys=>http://php.net/manual/en/function.array-keys.php
4233
		#備註:
4234
		#無.
4235
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4236
		unset($conf["variableCheck::checkArguments"]);
4237
 
4238
		#如果執行失敗
4239
		if($checkArguments["status"]==="false"){
4240
 
4241
			#設置錯誤訊息
4242
			$result["error"]=$checkArguments;
4243
 
4244
			#設置執行錯誤
4245
			$result["status"]="false";
4246
 
4247
			#回傳結果
4248
			return $result;
4249
 
4250
			}#if end
4251
 
4252
		#如果檢查不通過
4253
		if($checkArguments["passed"]==="false"){
4254
 
4255
			#設置錯誤訊息
4256
			$result["error"]=$checkArguments;
4257
 
4258
			#設置執行錯誤
4259
			$result["status"]="false";
4260
 
4261
			#回傳結果
4262
			return $result;
4263
 
4264
			}#if end
4265
 
4266
		#另存一份input
66 liveuser 4267
		$modifiedInput=$conf["input"];
3 liveuser 4268
 
4269
		#預設分段的關鍵字為空
4270
		$keyWordPart=array();
4271
 
4272
		#預設該行的變數為空
4273
		$varPart=array();
4274
 
4275
		#關鍵字行的結構順序
4276
		$OderOfPartInLine=array();
4277
 
4278
		#無窮回圈,解析格式字串
4279
		while(true){
4280
 
4281
			#判斷 format 是否含有 "${"、"}" 關鍵字
4282
			#函式說明:
4283
			#檢查一個字串裡面是否有多個關鍵字
4284
			#回傳結果:
4285
			#$result["status"],"true"代表執行成功,"false"代表執行失敗.
4286
			#$result["error"],錯誤訊息.
4287
			#$result["function"],當前執行的函數名稱.
4288
			#$result["founded"],是否有找到的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
4289
			#$result["foundedKeyWords"],找到的關鍵字.
4290
			#$result["foundedAll"],是否有找到全部的關鍵字,"true"代表有;"false"代表沒有.
4291
			#$result["argu"],使用的參數.
4292
			#必填參數:
4293
			#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
4294
			$conf["search::findManyKeyWords"]["keyWords"]=array("\${","}");
4295
			#$conf["string"],字串,要被搜尋的字串內容.
4296
			$conf["search::findManyKeyWords"]["string"]=$conf["format"];
4297
			#可省略參數:
4298
			#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合.
4299
			#$conf["completeEqual"]="true";
4300
			#參考資料:
4301
			#無.
4302
			#備註:
4303
			#無.
4304
			$findManyKeyWords=search::findManyKeyWords($conf["search::findManyKeyWords"]);
4305
			unset($conf["search::findManyKeyWords"]);
4306
 
4307
			#如果執行失敗
4308
			if($findManyKeyWords["status"]==="false"){
4309
 
4310
				#設置錯誤識別
4311
				$result["status"]="false";
4312
 
4313
				#設置錯誤訊息
4314
				$result["error"]=$findManyKeyWords;
4315
 
4316
				#回傳結果
4317
				return $result;
4318
 
4319
				}#if end
4320
 
4321
			#如果有 "${"、"}" 存在
4322
			if($findManyKeyWords["foundedAll"]==="true"){
4323
 
4324
				#debug
4325
				#var_dump(__LINE__,$findManyKeyWords);
4326
 
4327
				#取得 ${... 前面的部分
4328
				#函式說明:
4329
				#將字串特定關鍵字與其後面的內容剔除
4330
				#回傳結果:
4331
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4332
				#$result["error"],錯誤訊息陣列.
4333
				#$result["warning"],警告訊息鎮列.
4334
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4335
				#$result["function"],當前執行的函數名稱.
4336
				#$result["oriStr"],要處理的原始字串內容.
4337
				#$result["content"],處理好的的字串內容.
4338
				#$result["argu"],使用的參數.
4339
				#必填參數:
4340
				#$conf["stringIn"],字串,要處理的字串.
4341
				$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$conf["format"];
4342
				#$conf["keyWord"],字串,特定字串.
4343
				$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]="\${";
4344
				#可省略參數:
4345
				#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4346
				#$conf["deleteLastRepeatedOne"]="";
4347
				#參考資料:
4348
				#無.
4349
				#備註:
4350
				#無.
4351
				$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
4352
				unset($conf["stringProcess::delStrAfterKeyWord"]);
4353
 
4354
				#debug
4355
				#var_dump(__LINE__,$delStrAfterKeyWord);
4356
 
4357
				#如果執行失敗
4358
				if($delStrAfterKeyWord["status"]==="false"){
4359
 
4360
					#設置錯誤識別
4361
					$result["status"]="false";
4362
 
4363
					#設置錯誤訊息
4364
					$result["error"]=$delStrAfterKeyWord;
4365
 
4366
					#回傳結果
4367
					return $result;
4368
 
4369
					}#if end
4370
 
4371
				#如果要有關鍵字找不到
4372
				if($delStrAfterKeyWord["founded"]==="false"){
4373
 
4374
					#設置錯誤識別
4375
					$result["status"]="false";
4376
 
4377
					#設置錯誤訊息
4378
					$result["error"]=$delStrAfterKeyWord;
4379
 
4380
					#回傳結果
4381
					return $result;
4382
 
4383
					}#if end
4384
 
4385
				#如果前面有內容
4386
				if($delStrAfterKeyWord["content"]!==""){
4387
 
4388
					#儲存該行的關鍵字之一
4389
					$keyWordPart[]=$delStrAfterKeyWord["content"];
4390
 
4391
					#暫存的關鍵字資訊
4392
					$tmp=array("name"=>"keyWordPart","index"=>count($keyWordPart)-1,"value"=>$keyWordPart[count($keyWordPart)-1]);
4393
 
4394
					#設置順序資訊
4395
					$OderOfPartInLine[]=$tmp;
4396
 
4397
					}#if end
4398
 
4399
				#取得 }... 前面的部分
4400
				#函式說明:
4401
				#將字串特定關鍵字與其後面的內容剔除
4402
				#回傳結果:
4403
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4404
				#$result["error"],錯誤訊息陣列.
4405
				#$result["warning"],警告訊息鎮列.
4406
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4407
				#$result["function"],當前執行的函數名稱.
4408
				#$result["oriStr"],要處理的原始字串內容.
4409
				#$result["content"],處理好的的字串內容.
4410
				#$result["argu"],使用的參數.
4411
				#必填參數:
4412
				#$conf["stringIn"],字串,要處理的字串.
4413
				$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$delStrAfterKeyWord["deleted"];
4414
				#$conf["keyWord"],字串,特定字串.
4415
				$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]="}";
4416
				#可省略參數:
4417
				#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4418
				#$conf["deleteLastRepeatedOne"]="";
4419
				#參考資料:
4420
				#無.
4421
				#備註:
4422
				#無.
4423
				$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
4424
				unset($conf["stringProcess::delStrAfterKeyWord"]);
4425
 
4426
				#debug
4427
				#var_dump(__LINE__,$delStrAfterKeyWord);
4428
 
4429
				#如果執行失敗
4430
				if($delStrAfterKeyWord["status"]==="false"){
4431
 
4432
					#設置錯誤識別
4433
					$result["status"]="false";
4434
 
4435
					#設置錯誤訊息
4436
					$result["error"]=$delStrAfterKeyWord;
4437
 
4438
					#回傳結果
4439
					return $result;
4440
 
4441
					}#if end
4442
 
4443
				#如果要有關鍵字找不到
4444
				if($delStrAfterKeyWord["founded"]==="false"){
4445
 
4446
					#設置錯誤識別
4447
					$result["status"]="false";
4448
 
4449
					#設置錯誤訊息
4450
					$result["error"]=$delStrAfterKeyWord;
4451
 
4452
					#回傳結果
4453
					return $result;
4454
 
4455
					}#if end
4456
 
4457
				#var_dump($delStrAfterKeyWord["content"]."}");
4458
 
4459
				#儲存該行的變數名稱之一
4460
				$varPart[]=$delStrAfterKeyWord["content"]."}";
4461
 
4462
				#移除 "}" 其面的內容
4463
				#函式說明:
4464
				#將字串特定關鍵字與其前面的內容剔除
4465
				#回傳結果:
4466
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4467
				#$result["error"],錯誤訊息陣列.
4468
				#$result["warning"],警告訊息鎮列.
4469
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4470
				#$result["function"],當前執行的函數名稱.
4471
				#$result["argu"],使用的參數.
4472
				#$result["oriStr"],要處理的原始字串內容.
4473
				#$result["content"],處理好的的字串內容.
4474
				#$result["deleted"],被移除的內容.
4475
				#必填參數:
4476
				#$conf["stringIn"],字串,要處理的字串.
4477
				$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$conf["format"];
4478
				#$conf["keyWord"],字串,特定字串.
4479
				$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="}";
4480
				#可省略參數:
4481
				#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
4482
				#$conf["recursive"]="true";
4483
				#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
4484
				#$conf["lastResult"]=$delStrBeforeKeyWord;
4485
				#參考資料:
4486
				#無.
4487
				#備註:
4488
				#無.
4489
				$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4490
				unset($conf["stringProcess::delStrBeforeKeyWord"]);
4491
 
4492
				#如果執行失敗
4493
				if($delStrBeforeKeyWord["status"]==="false"){
4494
 
4495
					#設置錯誤識別
4496
					$result["status"]="false";
4497
 
4498
					#設置錯誤訊息
4499
					$result["error"]=$delStrBeforeKeyWord;
4500
 
4501
					#回傳結果
4502
					return $result;
4503
 
4504
					}#if end
4505
 
4506
				#如果要有關鍵字找不到
4507
				if($delStrBeforeKeyWord["founded"]==="false"){
4508
 
4509
					#設置錯誤識別
4510
					$result["status"]="false";
4511
 
4512
					#設置錯誤訊息
4513
					$result["error"]=$delStrBeforeKeyWord;
4514
 
4515
					#回傳結果
4516
					return $result;
4517
 
4518
					}#if end
4519
 
66 liveuser 4520
				#debug
4521
				#var_dump(__LINE__,$delStrBeforeKeyWord);
4522
 
3 liveuser 4523
				#取得剩下的格式字串部分
4524
				$conf["format"]=$delStrBeforeKeyWord["content"];
4525
 
4526
				#暫存的關鍵字資訊
4527
				$tmp=array("name"=>"varPart","index"=>count($varPart)-1,"value"=>$varPart[count($varPart)-1]);
4528
 
4529
				#設置順序資訊
4530
				$OderOfPartInLine[]=$tmp;
4531
 
4532
				}#if end
4533
 
4534
			#反之
4535
			else{
4536
 
66 liveuser 4537
				#若有剩下的內容
4538
				if(!empty($conf["format"])){
4539
 
4540
					#儲存剩下的內容為關鍵字之一
4541
					$keyWordPart[]=$conf["format"];
4542
 
4543
					#暫存的關鍵字資訊
4544
					$tmp=array("name"=>"keyWordPart","index"=>count($keyWordPart)-1,"value"=>$keyWordPart[count($keyWordPart)-1]);
4545
 
4546
					#設置順序資訊
4547
					$OderOfPartInLine[]=$tmp;
4548
 
4549
					}#if end
4550
 
3 liveuser 4551
				#結束格式字串的解析
4552
				break;
4553
 
4554
				}#else end
4555
 
4556
			}#while end
4557
 
4558
		#debug
4559
		#var_dump(__LINE__,$OderOfPartInLine);
4560
 
4561
		#如果有關鍵字片段與變數的順序存在
4562
		if( count($OderOfPartInLine)>0 ){
4563
 
4564
			#debug
4565
			#var_dump(__LINE__,$OderOfPartInLine);
4566
 
66 liveuser 4567
			#預設一開始 varPart 的計數為 0
4568
			$varPartCount=0;
4569
 
3 liveuser 4570
			#針對每個資訊
4571
			foreach($OderOfPartInLine as $index=>$condition){
4572
 
4573
				#debug
4574
				#var_dump(__LINE__,$index,$condition);
4575
 
4576
				#判斷資訊
4577
				switch($condition["name"]){
4578
 
4579
					#如果是 "keyWordPart"
4580
					case "keyWordPart":
4581
 
4582
						#確認是否開頭有符合
4583
 
4584
						#函式說明:
4585
						#取得關鍵字在字串的哪個位置(字首,字尾,中間)
4586
						#回傳結果:
4587
						#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
4588
						#$result["error"],錯誤訊息陣列.
4589
						#$result["function"],當前執行的函數名稱.
4590
						#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
4591
						#$result["argu"],傳入的參數.
4592
						#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
4593
						#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
4594
						#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
4595
						#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
4596
						#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
4597
						#必填參數:
4598
						#$conf["inputStr"],字串,被搜尋的字串.
4599
						$conf["search::findKeyWordPosition"]["inputStr"]=$modifiedInput;
4600
						#$conf["keyWord"],字串,關鍵字.
4601
						$conf["search::findKeyWordPosition"]["keyWord"]=$condition["value"];
4602
						#可省略參數:
4603
						#無.
4604
						#參考資料:
4605
						#http://php.net/manual/en/function.strpos.php
4606
						#備註:
4607
						#無.
4608
						$findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
4609
						unset($conf["search::findKeyWordPosition"]);
4610
 
4611
						#debug
4612
						#var_dump(__LINE__,$findKeyWordPosition);
4613
 
4614
						#如果執行失敗
4615
						if($findKeyWordPosition["status"]==="false"){
4616
 
4617
							#設置錯誤識別
4618
							$result["status"]="false";
4619
 
4620
							#設置錯誤訊息
4621
							$result["error"]=$findKeyWordPosition;
4622
 
4623
							#回傳結果
4624
							return $result;
4625
 
4626
							}#if end
4627
 
4628
						#如果沒有符合
4629
						if($findKeyWordPosition["found"]==="false"){
4630
 
4631
							#設置錯誤識別
4632
							$result["status"]="true";
4633
 
4634
							#設置沒有符合格式
4635
							$result["found"]="false";
4636
 
4637
							#回傳結果
4638
							return $result;
4639
 
4640
							}#if end
4641
 
4642
						#如果關鍵字不在開頭
4643
						if($findKeyWordPosition["head"]==="false"){
4644
 
4645
							#設置錯誤識別
4646
							$result["status"]="true";
4647
 
4648
							#設置沒有符合格式
4649
							$result["found"]="false";
4650
 
4651
							#回傳結果
4652
							return $result;
4653
 
4654
							}#if end
4655
 
4656
						#函式說明:
4657
						#將字串特定關鍵字與其前面的內容剔除
4658
						#回傳結果:
4659
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4660
						#$result["error"],錯誤訊息陣列.
4661
						#$result["warning"],警告訊息鎮列.
4662
						#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4663
						#$result["function"],當前執行的函數名稱.
4664
						#$result["argu"],使用的參數.
4665
						#$result["oriStr"],要處理的原始字串內容.
4666
						#$result["content"],處理好的的字串內容.
4667
						#$result["deleted"],被移除的內容.
4668
						#必填參數:
4669
						#$conf["stringIn"],字串,要處理的字串.
4670
						$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$modifiedInput;
4671
						#$conf["keyWord"],字串,特定字串.
4672
						$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$condition["value"];
4673
						#可省略參數:
4674
						#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
4675
						#$conf["recursive"]="true";
4676
						#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
4677
						#$conf["lastResult"]=$delStrBeforeKeyWord;
4678
						#參考資料:
4679
						#無.
4680
						#備註:
4681
						#無.
4682
						$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4683
						unset($conf["stringProcess::delStrBeforeKeyWord"]);
4684
 
4685
						#debug
4686
						#var_dump(__LINE__,$delStrBeforeKeyWord);
4687
 
4688
						#如果執行失敗
4689
						if($delStrBeforeKeyWord["status"]==="false"){
4690
 
4691
							#設置錯誤識別
4692
							$result["status"]="false";
4693
 
4694
							#設置錯誤訊息
4695
							$result["error"]=$delStrBeforeKeyWord;
4696
 
4697
							#回傳結果
4698
							return $result;
4699
 
4700
							}#if end
4701
 
4702
						#如果沒有符合
4703
						if($delStrBeforeKeyWord["founded"]==="false"){
4704
 
4705
							#設置錯誤識別
4706
							$result["status"]="true";
4707
 
4708
							#設置沒有符合格式
4709
							$result["found"]="false";
4710
 
4711
							#回傳結果
4712
							return $result;
4713
 
4714
							}#if end
4715
 
4716
						#執行到這邊代表有符合
4717
 
4718
						#取得剩下未判斷是否符合的項目
4719
						$modifiedInput=$delStrBeforeKeyWord["content"];
4720
 
4721
						#換找下個資訊有無符合
4722
						continue 2;
4723
 
4724
						#結束 switch
4725
						break;
4726
 
4727
					#如果是 "varPart"
4728
					case "varPart":
4729
 
66 liveuser 4730
						#計數第幾個 varPart
4731
						$varPartCount++;
4732
 
3 liveuser 4733
						#取得變數名稱,亦即去掉開頭的 "${" 跟結尾的 "}"
4734
						$varName=substr($OderOfPartInLine[($index)]["value"],2,strlen($OderOfPartInLine[($index)]["value"])-3);
4735
 
4736
						#如果後面沒有 $OderOfPartInLine 了
4737
						if(!isset($OderOfPartInLine[($index+1)])){
4738
 
66 liveuser 4739
							#取得變數的數值
4740
							$varVal=$modifiedInput;
4741
 
4742
							/*
4743
 
3 liveuser 4744
							#代表有符合所有條件
4745
 
4746
							#設置解析好的變數
4747
							$result["content"][]=$modifiedInput;
4748
 
4749
							#設置執行正常的識別
4750
							$result["status"]="true";
4751
 
4752
							#設置有符合格式
4753
							$result["found"]="true";
4754
 
4755
							#回傳結果
4756
							return $result;
4757
 
66 liveuser 4758
							*/
4759
 
3 liveuser 4760
							}#if end
66 liveuser 4761
 
3 liveuser 4762
						#執行到這邊代表後面還有 $OderOfPartInLine
66 liveuser 4763
						else{
3 liveuser 4764
 
66 liveuser 4765
							#debug
4766
							#var_dump(__LINE__,$OderOfPartInLine[($index+1)]);
3 liveuser 4767
 
66 liveuser 4768
							#如果後面的內容不是 keyWordPart
4769
							if($OderOfPartInLine[($index+1)]["name"]!=="keyWordPart"){
3 liveuser 4770
 
66 liveuser 4771
								#設置錯誤識別
4772
								$result["status"]="false";
4773
 
4774
								#設置錯誤訊息
4775
								$result["error"][]="multi continued varName not supported";
4776
 
4777
								#回傳結果
4778
								return $result;
3 liveuser 4779
 
66 liveuser 4780
								}#if end
4781
 
4782
							#執行到這邊代表為 varPart
4783
 
4784
							#函式說明:
4785
							#取得關鍵字在字串的哪個位置(字首,字尾,中間)
4786
							#回傳結果:
4787
							#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
4788
							#$result["error"],錯誤訊息陣列.
4789
							#$result["function"],當前執行的函數名稱.
4790
							#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
4791
							#$result["argu"],傳入的參數.
4792
							#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
4793
							#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
4794
							#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
4795
							#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
4796
							#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
4797
							#必填參數:
4798
							#$conf["inputStr"],字串,被搜尋的字串.
4799
							$conf["search::findKeyWordPosition"]["inputStr"]=$modifiedInput;
4800
							#$conf["keyWord"],字串,關鍵字.
4801
							$conf["search::findKeyWordPosition"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
4802
							#可省略參數:
4803
							#無.
4804
							#參考資料:
4805
							#http://php.net/manual/en/function.strpos.php
4806
							#備註:
4807
							#無.
4808
							$findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
4809
							unset($conf["search::findKeyWordPosition"]);
3 liveuser 4810
 
66 liveuser 4811
							#debug
4812
							#var_dump(__LINE__,$findKeyWordPosition);
3 liveuser 4813
 
66 liveuser 4814
							#如果執行失敗
4815
							if($findKeyWordPosition["status"]==="false"){
3 liveuser 4816
 
66 liveuser 4817
								#設置錯誤識別
4818
								$result["status"]="false";
4819
 
4820
								#設置錯誤訊息
4821
								$result["error"]=$findKeyWordPosition;
4822
 
4823
								#回傳結果
4824
								return $result;
3 liveuser 4825
 
66 liveuser 4826
								}#if end
4827
 
4828
							#如果沒有符合
4829
							if($findKeyWordPosition["found"]==="false"){
3 liveuser 4830
 
66 liveuser 4831
								#設置執行狀態識別
4832
								$result["status"]="true";
4833
 
4834
								#設置沒有符合格式
4835
								$result["found"]="false";
4836
 
4837
								#回傳結果
4838
								return $result;
3 liveuser 4839
 
66 liveuser 4840
								}#if end
3 liveuser 4841
 
66 liveuser 4842
							#執行到這邊代表有符合關鍵字
3 liveuser 4843
 
66 liveuser 4844
							#函式說明:
4845
							#將字串特定關鍵字與其後面的內容剔除
4846
							#回傳結果:
4847
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4848
							#$result["error"],錯誤訊息陣列.
4849
							#$result["warning"],警告訊息鎮列.
4850
							#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4851
							#$result["function"],當前執行的函數名稱.
4852
							#$result["oriStr"],要處理的原始字串內容.
4853
							#$result["content"],處理好的的字串內容.
4854
							#$result["deleted"],被移除的內容.
4855
							#$result["argu"],使用的參數.
4856
							#必填參數:
4857
							#$conf["stringIn"],字串,要處理的字串.
4858
							$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$modifiedInput;
4859
							#$conf["keyWord"],字串,特定字串.
4860
							$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
4861
							#可省略參數:
4862
							#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4863
							#$conf["deleteLastRepeatedOne"]="";
4864
							#參考資料:
4865
							#無.
4866
							#備註:
4867
							#無.
4868
							$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
4869
							unset($conf["stringProcess::delStrAfterKeyWord"]);						
3 liveuser 4870
 
66 liveuser 4871
							#如果執行失敗
4872
							if($delStrAfterKeyWord["status"]==="false"){
3 liveuser 4873
 
66 liveuser 4874
								#設置錯誤識別
4875
								$result["status"]="false";
4876
 
4877
								#設置錯誤訊息
4878
								$result["error"]=$delStrAfterKeyWord;
4879
 
4880
								#回傳結果
4881
								return $result;
4882
 
4883
								}#if end
4884
 
4885
							#如果沒有符合
4886
							if($delStrAfterKeyWord["founded"]==="false"){
4887
 
4888
								#設置執行狀態識別
4889
								$result["status"]="true";
4890
 
4891
								#設置沒有符合格式
4892
								$result["found"]="false";
4893
 
4894
								#回傳結果
4895
								return $result;
4896
 
4897
								}#if end
4898
 
4899
							#另存變數的數值
4900
							$varVal=$delStrAfterKeyWord["content"];
3 liveuser 4901
 
66 liveuser 4902
							}#else end
4903
 
4904
						#如果有設置 $conf["varEqual"]
4905
						if(isset($conf["varEqual"])){
4906
 
4907
							#debug
4908
							#var_dump(__LINE__,$conf["varEqual"]);
4909
 
4910
							#debug
4911
							#var_dump(__LINE__,$varPartCount);
4912
 
4913
							#若有設置該變數的條件
4914
							if(isset($conf["varEqual"][$varPartCount-1])){
3 liveuser 4915
 
66 liveuser 4916
								#取得之
4917
								$varEqual=$conf["varEqual"][$varPartCount-1];
3 liveuser 4918
 
66 liveuser 4919
								#如果條件不為 null,代表變數的數值要等於 $varEqual 才算符合
4920
								if($varEqual!==null){
4921
 
4922
									#如果數值不符合
4923
									if($varVal!==$varEqual){
4924
 
4925
										#設置執行狀態識別
4926
										$result["status"]="true";
4927
 
4928
										#設置沒有符合格式
4929
										$result["found"]="false";
4930
 
4931
										#設置解析好的變數
4932
										$result["content"][]=$varVal;
4933
 
4934
										#用變數名稱來儲存
4935
										$result["parsedVar"][$varName][]=$varVal;
4936
 
4937
										#回傳結果
4938
										return $result;
4939
 
4940
										}#if end
4941
 
4942
									}#if end
4943
 
4944
								#反之 $varVal 現階段可為任意數值
4945
								else{
4946
 
4947
									#如果有設置額外條件
4948
									if(isset($conf["varCon"])){
4949
 
4950
										#取得其額外條件
4951
										$varCon=$conf["varCon"][$varPartCount-1];
4952
 
4953
										#如果有設置額外條件
4954
										if($varCon!==null){
4955
 
4956
											#檢查額外條件參數
4957
											#函式說明:
4958
											#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4959
											#回傳結果:
4960
											#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4961
											#$result["error"],執行不正常結束的錯訊息陣列.
4962
											#$result["simpleError"],簡單表示的錯誤訊息.
4963
											#$result["function"],當前執行的函式名稱.
4964
											#$result["argu"],設置給予的參數.
4965
											#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4966
											#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4967
											#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4968
											#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
4969
											#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
4970
											#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
4971
											#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
4972
											#$result["notNeedVar"],字串陣列,多餘的參數名稱.
4973
											#必填參數:
4974
											#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
4975
											$conf["variableCheck::checkArguments"]["varInput"]=&$varCon;
4976
											#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
4977
											$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
4978
											#可省略參數:
4979
											#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
4980
											#$conf["mustBeFilledVariableName"]=array();
4981
											#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
4982
											#$conf["mustBeFilledVariableType"]=array();
4983
											#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
4984
											#$conf["canBeEmptyString"]="false";
4985
											#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
4986
											#$conf["canNotBeEmpty"]=array();
4987
											#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
4988
											#$conf["canBeEmpty"]=array();
4989
											#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
4990
											#$conf["skipableVariableCanNotBeEmpty"]=array();
4991
											#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
4992
											$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("head","no_head","tail","no_tail");
4993
											#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
4994
											$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
4995
											#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
4996
											#$conf["skipableVarDefaultValue"]=array("");
4997
											#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
4998
											#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="";
4999
											#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5000
											#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5001
											#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5002
											$conf["variableCheck::checkArguments"]["disallowAllSkipableVarNotExist"]="true";
5003
											#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5004
											#$conf["arrayCountEqualCheck"][]=array();
5005
											#參考資料:
5006
											#array_keys=>http://php.net/manual/en/function.array-keys.php
5007
											#備註:
5008
											#無.
5009
											$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5010
											unset($conf["variableCheck::checkArguments"]);
5011
 
5012
											#如果執行失敗
5013
											if($checkArguments["status"]==="false"){
5014
 
5015
												#設置錯誤識別
5016
												$result["status"]="false";
5017
 
5018
												#設置錯誤訊息
5019
												$result["error"]=$checkArguments;
5020
 
5021
												#回傳結果
5022
												return $result;
5023
 
5024
												}#if end
5025
 
5026
											#如果檢查不通過
5027
											if($checkArguments["passed"]==="false"){
5028
 
5029
												#設置錯誤識別
5030
												$result["status"]="false";
5031
 
5032
												#設置錯誤訊息
5033
												$result["error"]=$checkArguments;
5034
 
5035
												#回傳結果
5036
												return $result;
5037
 
5038
												}#if end
5039
 
5040
											#針對每個額外條件
5041
											foreach($varCon as $con => $cVal){
5042
 
5043
												#判斷額外條件
5044
												switch($con){
5045
 
5046
													#如果是 "head"
5047
													case "head":
5048
 
5049
														#函式說明:
5050
														#取得符合特定字首與字尾的字串
5051
														#回傳結果:
5052
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5053
														#$result["function"],當前執行的函數名稱.
5054
														#$result["error"],錯誤訊息陣列.
5055
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5056
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5057
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5058
														#$result["argu"],使用的參數.
5059
														#必填參數:
5060
														#$conf["checkString"],字串,要檢查的字串.
5061
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5062
														#可省略參數:
5063
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5064
														$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5065
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5066
														#$conf["tailWord"]="";
5067
														#參考資料:
5068
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5069
														#備註:
5070
														#無.
5071
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5072
														unset($conf["search::getMeetConditionsString"]);
5073
 
5074
														#如果執行失敗
5075
														if($getMeetConditionsString["status"]==="false"){
5076
 
5077
															#設置錯誤識別
5078
															$result["status"]="false";
5079
 
5080
															#設置錯誤訊息
5081
															$result["error"]=$getMeetConditionsString;
5082
 
5083
															#回傳結果
5084
															return $result;
5085
 
5086
															}#if end
5087
 
5088
														#如果沒有需要的關鍵字
5089
														if($getMeetConditionsString["founded"]==="false"){
5090
 
5091
															#設置執行正常識別
5092
															$result["status"]="true";
5093
 
5094
															#設置錯誤訊息
5095
															$result["found"]="false";
5096
 
5097
															#設置解析好的變數
5098
															$result["content"][]=$varVal;
5099
 
5100
															#用變數名稱來儲存
5101
															$result["parsedVar"][$varName][]=$varVal;
5102
 
5103
															#回傳結果
5104
															return $result;
5105
 
5106
															}#if end
5107
 
5108
														#跳出 switch
5109
														break;
5110
 
5111
													#如果是 "no_head"
5112
													case "no_head":
5113
 
5114
														#函式說明:
5115
														#取得符合特定字首與字尾的字串
5116
														#回傳結果:
5117
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5118
														#$result["function"],當前執行的函數名稱.
5119
														#$result["error"],錯誤訊息陣列.
5120
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5121
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5122
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5123
														#$result["argu"],使用的參數.
5124
														#必填參數:
5125
														#$conf["checkString"],字串,要檢查的字串.
5126
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5127
														#可省略參數:
5128
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5129
														$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5130
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5131
														#$conf["tailWord"]="";
5132
														#參考資料:
5133
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5134
														#備註:
5135
														#無.
5136
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5137
														unset($conf["search::getMeetConditionsString"]);
5138
 
5139
														#如果執行失敗
5140
														if($getMeetConditionsString["status"]==="false"){
5141
 
5142
															#設置錯誤識別
5143
															$result["status"]="false";
5144
 
5145
															#設置錯誤訊息
5146
															$result["error"]=$getMeetConditionsString;
5147
 
5148
															#回傳結果
5149
															return $result;
5150
 
5151
															}#if end
5152
 
5153
														#如果有不需要的關鍵字
5154
														if($getMeetConditionsString["founded"]==="true"){
5155
 
5156
															#設置執行正常識別
5157
															$result["status"]="true";
5158
 
5159
															#設置錯誤訊息
5160
															$result["found"]="false";
5161
 
5162
															#設置解析好的變數
5163
															$result["content"][]=$varVal;
5164
 
5165
															#用變數名稱來儲存
5166
															$result["parsedVar"][$varName][]=$varVal;
5167
 
5168
															#回傳結果
5169
															return $result;
5170
 
5171
															}#if end
5172
 
5173
														#跳出 switch
5174
														break;
5175
 
5176
													#如果是 "tail"
5177
													case "tail":
5178
 
5179
														#函式說明:
5180
														#取得符合特定字首與字尾的字串
5181
														#回傳結果:
5182
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5183
														#$result["function"],當前執行的函數名稱.
5184
														#$result["error"],錯誤訊息陣列.
5185
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5186
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5187
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5188
														#$result["argu"],使用的參數.
5189
														#必填參數:
5190
														#$conf["checkString"],字串,要檢查的字串.
5191
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5192
														#可省略參數:
5193
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5194
														#$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5195
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5196
														$conf["search::getMeetConditionsString"]["tailWord"]=$cVal;
5197
														#參考資料:
5198
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5199
														#備註:
5200
														#無.
5201
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5202
														unset($conf["search::getMeetConditionsString"]);
5203
 
5204
														#如果執行失敗
5205
														if($getMeetConditionsString["status"]==="false"){
5206
 
5207
															#設置錯誤識別
5208
															$result["status"]="false";
5209
 
5210
															#設置錯誤訊息
5211
															$result["error"]=$getMeetConditionsString;
5212
 
5213
															#回傳結果
5214
															return $result;
5215
 
5216
															}#if end
5217
 
5218
														#如果無需要的關鍵字
5219
														if($getMeetConditionsString["founded"]==="false"){
5220
 
5221
															#設置執行正常識別
5222
															$result["status"]="true";
5223
 
5224
															#設置錯誤訊息
5225
															$result["found"]="false";
5226
 
5227
															#設置解析好的變數
5228
															$result["content"][]=$varVal;
5229
 
5230
															#用變數名稱來儲存
5231
															$result["parsedVar"][$varName][]=$varVal;
5232
 
5233
															#回傳結果
5234
															return $result;
5235
 
5236
															}#if end
5237
 
5238
														#跳出 switch
5239
														break;
5240
 
5241
													#如果是 "no_tail"
5242
													case "no_tail":
5243
 
5244
														#函式說明:
5245
														#取得符合特定字首與字尾的字串
5246
														#回傳結果:
5247
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5248
														#$result["function"],當前執行的函數名稱.
5249
														#$result["error"],錯誤訊息陣列.
5250
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5251
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5252
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5253
														#$result["argu"],使用的參數.
5254
														#必填參數:
5255
														#$conf["checkString"],字串,要檢查的字串.
5256
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5257
														#可省略參數:
5258
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5259
														#$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5260
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5261
														$conf["search::getMeetConditionsString"]["tailWord"]=$cVal;
5262
														#參考資料:
5263
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5264
														#備註:
5265
														#無.
5266
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5267
														unset($conf["search::getMeetConditionsString"]);
5268
 
5269
														#如果執行失敗
5270
														if($getMeetConditionsString["status"]==="false"){
5271
 
5272
															#設置錯誤識別
5273
															$result["status"]="false";
5274
 
5275
															#設置錯誤訊息
5276
															$result["error"]=$getMeetConditionsString;
5277
 
5278
															#回傳結果
5279
															return $result;
5280
 
5281
															}#if end
5282
 
5283
														#如果有無需要的關鍵字
5284
														if($getMeetConditionsString["founded"]==="true"){
5285
 
5286
															#設置執行正常識別
5287
															$result["status"]="true";
5288
 
5289
															#設置錯誤訊息
5290
															$result["found"]="false";
5291
 
5292
															#設置解析好的變數
5293
															$result["content"][]=$varVal;
5294
 
5295
															#用變數名稱來儲存
5296
															$result["parsedVar"][$varName][]=$varVal;
5297
 
5298
															#回傳結果
5299
															return $result;
5300
 
5301
															}#if end
5302
 
5303
														#跳出 switch
5304
														break;
5305
 
5306
													#若是其他額外條件
5307
													default:
5308
 
5309
														#設置錯誤識別
5310
														$result["status"]="false";
5311
 
5312
														#設置錯誤訊息
5313
														$result["error"][]="not supported condition \"".$con."\"";
5314
 
5315
														#設置錯誤訊息
5316
														$result["error"][]=$checkArguments;
5317
 
5318
														#回傳結果
5319
														return $result;
5320
 
5321
													}#switch end
5322
 
5323
												}#foreach end
5324
 
5325
											}#if end
5326
 
5327
										}#if end
5328
 
5329
									}#else end
5330
 
5331
								}#if end
3 liveuser 5332
 
5333
							}#if end
5334
 
5335
						#設置解析好的變數
66 liveuser 5336
						$result["content"][]=$varVal;
3 liveuser 5337
 
5338
						#用變數名稱來儲存
66 liveuser 5339
						$result["parsedVar"][$varName][]=$varVal;
3 liveuser 5340
 
66 liveuser 5341
						#若後面還有特定關鍵字
5342
						if(isset($OderOfPartInLine[($index+1)]["value"])){
3 liveuser 5343
 
66 liveuser 5344
							#函式說明:
5345
							#將字串特定關鍵字與其前面的內容剔除
5346
							#回傳結果:
5347
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5348
							#$result["error"],錯誤訊息陣列.
5349
							#$result["warning"],警告訊息鎮列.
5350
							#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
5351
							#$result["function"],當前執行的函數名稱.
5352
							#$result["argu"],使用的參數.
5353
							#$result["oriStr"],要處理的原始字串內容.
5354
							#$result["content"],處理好的的字串內容.
5355
							#$result["deleted"],被移除的內容.
5356
							#必填參數:
5357
							#$conf["stringIn"],字串,要處理的字串.
5358
							$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$modifiedInput;
5359
							#$conf["keyWord"],字串,特定字串.
5360
							$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
5361
							#可省略參數:
5362
							#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
5363
							#$conf["recursive"]="true";
5364
							#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
5365
							#$conf["lastResult"]=$delStrBeforeKeyWord;
5366
							#參考資料:
5367
							#無.
5368
							#備註:
5369
							#無.
5370
							$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
5371
							unset($conf["stringProcess::delStrBeforeKeyWord"]);
3 liveuser 5372
 
66 liveuser 5373
							#debug
5374
							#var_dump(__LINE__,$delStrBeforeKeyWord);
3 liveuser 5375
 
66 liveuser 5376
							#如果執行失敗
5377
							if($delStrBeforeKeyWord["status"]==="false"){
3 liveuser 5378
 
66 liveuser 5379
								#設置錯誤識別
5380
								$result["status"]="false";
5381
 
5382
								#設置錯誤訊息
5383
								$result["error"]=$delStrBeforeKeyWord;
5384
 
5385
								#回傳結果
5386
								return $result;
3 liveuser 5387
 
66 liveuser 5388
								}#if end
5389
 
5390
							#如果該存在的關鍵字不在
5391
							if($delStrBeforeKeyWord["founded"]==="false"){
3 liveuser 5392
 
66 liveuser 5393
								#設置錯誤識別
5394
								$result["status"]="true";
5395
 
5396
								#設置沒有符合格式
5397
								$result["found"]="false";
5398
 
5399
								#回傳結果
5400
								return $result;
5401
 
5402
								}#if end
3 liveuser 5403
 
66 liveuser 5404
							#取得剩下未判斷是否符合的項目
5405
							$modifiedInput=$OderOfPartInLine[($index+1)]["value"].$delStrBeforeKeyWord["content"];
5406
 
5407
							#debug
5408
							#var_dump(__LINE__,$modifiedOriLineContent);
5409
 
3 liveuser 5410
							}#if end
5411
 
5412
						#換找下個資訊有無符合
5413
						continue 2;
5414
 
5415
						break;
5416
 
5417
					#其他狀況
5418
					default:
5419
 
5420
						#設置錯誤識別
5421
						$result["status"]="false";
5422
 
5423
						#設置錯誤訊息
5424
						$result["error"][]="unexpected name value";
5425
 
5426
						#設置錯誤訊息
5427
						$result["error"][]=$condition;
5428
 
5429
						#回傳結果
5430
						return $result;
5431
 
5432
					}#switch end
5433
 
5434
				}#foreach end
5435
 
5436
			#執行到這邊代表該行有符合關鍵字的結構
5437
 
5438
			#設置執行正常識別
5439
			$result["status"]="true";
5440
 
5441
			#設置有符合格式
5442
			$result["found"]="true";
5443
 
5444
			#回傳結果
5445
			return $result;
5446
 
5447
			}#if end
5448
 
5449
		#format參數有問題
5450
		else{
5451
 
5452
			#設置錯誤識別
5453
			$result["status"]="false";
5454
 
5455
			#設置錯誤訊息
5456
			$result["error"][]="not supported format:".$conf["format"];
5457
 
5458
			#回傳結果
5459
			return $result;
5460
 
5461
			}#else end
5462
 
5463
		}#function findSpecifyStr end
5464
 
5465
	/*
5466
	#函式說明:
5467
	#尋找字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
5468
	#回傳結果:
5469
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5470
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
5471
	#$result["function"],當前執行的函式名稱.
5472
	#$result["argu"],所使用的參數.
5473
	#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5474
	#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
5475
	#必填參數:
5476
	#$conf["input"],字串,要檢查的字串.
5477
	$conf["input"]="";
66 liveuser 5478
	#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
3 liveuser 5479
	$conf["formats"]=array("");
5480
	#可省略參數:
5481
	#無.
5482
	#參考資料:
5483
	#無.
5484
	#備註:
5485
	#無.
5486
	*/
5487
	public static function findSpecifyStrFormats(&$conf){
5488
 
5489
		#初始化要回傳的結果
5490
		$result=array();
5491
 
5492
		#取得當前執行的函數名稱
5493
		$result["function"]=__FUNCTION__;
5494
 
5495
		#如果沒有參數
5496
		if(func_num_args()==0){
5497
 
5498
			#設置執行失敗
5499
			$result["status"]="false";
5500
 
5501
			#設置執行錯誤訊息
5502
			$result["error"]="函數".$result["function"]."需要參數";
5503
 
5504
			#回傳結果
5505
			return $result;
5506
 
5507
			}#if end
5508
 
5509
		#取得參數
5510
		$result["argu"]=$conf;
5511
 
5512
		#如果 $conf 不為陣列
5513
		if(gettype($conf)!=="array"){
5514
 
5515
			#設置執行失敗
5516
			$result["status"]="false";
5517
 
5518
			#設置執行錯誤訊息
5519
			$result["error"][]="\$conf變數須為陣列形態";
5520
 
5521
			#如果傳入的參數為 null
5522
			if(is_null($conf)){
5523
 
5524
				#設置執行錯誤訊息
5525
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5526
 
5527
				}#if end
5528
 
5529
			#回傳結果
5530
			return $result;
5531
 
5532
			}#if end
5533
 
5534
		#函式說明:
5535
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5536
		#回傳結果:
5537
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5538
		#$result["error"],執行不正常結束的錯訊息陣列.
5539
		#$result["simpleError"],簡單表示的錯誤訊息.
5540
		#$result["function"],當前執行的函式名稱.
5541
		#$result["argu"],設置給予的參數.
5542
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5543
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5544
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5545
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5546
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5547
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5548
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5549
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5550
		#必填參數:
5551
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5552
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5553
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5554
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5555
		#可省略參數:
5556
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5557
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","formats");
5558
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
5559
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
5560
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5561
		#$conf["canBeEmptyString"]="false";
5562
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5563
		#$conf["canNotBeEmpty"]=array();
5564
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5565
		#$conf["canBeEmpty"]=array();
5566
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5567
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5568
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5569
		#$conf["skipableVariableName"]=array();
5570
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5571
		#$conf["skipableVariableType"]=array();
5572
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5573
		#$conf["skipableVarDefaultValue"]=array("");
5574
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5575
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5576
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5577
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5578
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5579
		#$conf["disallowAllSkipableVarNotExist"]="";
5580
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5581
		#$conf["arrayCountEqualCheck"][]=array();
5582
		#參考資料:
5583
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5584
		#備註:
5585
		#無.
5586
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5587
		unset($conf["variableCheck::checkArguments"]);
5588
 
5589
		#如果執行失敗
5590
		if($checkArguments["status"]==="false"){
5591
 
5592
			#設置錯誤訊息
5593
			$result["error"]=$checkArguments;
5594
 
5595
			#設置執行錯誤
5596
			$result["status"]="false";
5597
 
5598
			#回傳結果
5599
			return $result;
5600
 
5601
			}#if end
5602
 
5603
		#如果檢查不通過
5604
		if($checkArguments["passed"]==="false"){
5605
 
5606
			#設置錯誤訊息
5607
			$result["error"]=$checkArguments;
5608
 
5609
			#設置執行錯誤
5610
			$result["status"]="false";
5611
 
5612
			#回傳結果
5613
			return $result;
5614
 
5615
			}#if end
5616
 
5617
		#初始化符合的格式
5618
		$result["content"]=array();
5619
 
5620
		#預設沒有符合的格式
5621
		$result["found"]="false";
5622
 
5623
		#針對每個格式
5624
		foreach($conf["formats"] as $format){
5625
 
5626
			#函式說明:
5627
			#尋找字串中是否含有符合格式的內容,且回傳解析好的變數數值.
5628
			#回傳結果:
5629
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5630
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
5631
			#$result["function"],當前執行的函式名稱.
5632
			#$result["argu"],所使用的參數.
5633
			#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5634
			#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
5635
			#必填參數:
5636
			#$conf["input"],字串,要檢查的字串.
5637
			$conf["search::findSpecifyStrFormat"]["input"]=$conf["input"];
5638
			#$conf["format"],格式字串,要尋找的格式字串.格式為固定的字串("fixedStr format")與變數(${keyWordVarName})組成.
5639
			$conf["search::findSpecifyStrFormat"]["format"]=$format;
5640
			#可省略參數:
5641
			#無.
5642
			#參考資料:
5643
			#無.
5644
			#備註:
5645
			#無.
5646
			$findSpecifyStrFormat=search::findSpecifyStrFormat($conf["search::findSpecifyStrFormat"]);
5647
			unset($conf["search::findSpecifyStrFormat"]);
5648
 
5649
			#如果執行失敗
5650
			if($findSpecifyStrFormat["status"]==="false"){
5651
 
5652
				#設置錯誤訊息
5653
				$result["error"]=$findSpecifyStrFormat;
5654
 
5655
				#設置執行錯誤
5656
				$result["status"]="false";
5657
 
5658
				#回傳結果
5659
				return $result;
5660
 
5661
				}#if end
5662
 
5663
			#如果有找到符合的格式
5664
			if($findSpecifyStrFormat["found"]==="true"){
5665
 
5666
				#var_dump(__LINE__,$findSpecifyStrFormat);
5667
 
5668
				#設置符合的格式資訊
5669
				$result["content"][]=$findSpecifyStrFormat["content"];
5670
 
5671
				#設置有符合的格式
5672
				$result["found"]="true";
5673
 
5674
				}#if end
5675
 
5676
			}#foreach end
5677
 
5678
		#設置執行正常
5679
		$result["status"]="true";
5680
 
5681
		#回傳結果
5682
		return $result;
5683
 
5684
		}#function findSpecifyStrFormats end
5685
 
5686
	/*
5687
	#函式說明:
5688
	#尋找多個字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
5689
	#回傳結果:
5690
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5691
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
5692
	#$result["function"],當前執行的函式名稱.
5693
	#$result["argu"],所使用的參數.
5694
	#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5695
	#$result["content"],陣列,key為lineNo者為inputs參數的索引;key為content者為符合的資訊,若為n個${*},則當found為"true"時,就會回傳n個元素.
5696
	#必填參數:
5697
	#$conf["inputs"],字串陣列,要檢查的字串集合.
5698
	$conf["inputs"]=array("");
66 liveuser 5699
	#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
3 liveuser 5700
	$conf["formats"]=array("");
5701
	#可省略參數:
5702
	#無.
5703
	#參考資料:
5704
	#無.
5705
	#備註:
5706
	#無.
5707
	*/
5708
	public static function getMatchFormatsStrings(&$conf){
5709
 
5710
		#初始化要回傳的結果
5711
		$result=array();
5712
 
5713
		#取得當前執行的函數名稱
5714
		$result["function"]=__FUNCTION__;
5715
 
5716
		#如果沒有參數
5717
		if(func_num_args()==0){
5718
 
5719
			#設置執行失敗
5720
			$result["status"]="false";
5721
 
5722
			#設置執行錯誤訊息
5723
			$result["error"]="函數".$result["function"]."需要參數";
5724
 
5725
			#回傳結果
5726
			return $result;
5727
 
5728
			}#if end
5729
 
5730
		#取得參數
5731
		$result["argu"]=$conf;
5732
 
5733
		#如果 $conf 不為陣列
5734
		if(gettype($conf)!=="array"){
5735
 
5736
			#設置執行失敗
5737
			$result["status"]="false";
5738
 
5739
			#設置執行錯誤訊息
5740
			$result["error"][]="\$conf變數須為陣列形態";
5741
 
5742
			#如果傳入的參數為 null
5743
			if(is_null($conf)){
5744
 
5745
				#設置執行錯誤訊息
5746
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5747
 
5748
				}#if end
5749
 
5750
			#回傳結果
5751
			return $result;
5752
 
5753
			}#if end
5754
 
5755
		#函式說明:
5756
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5757
		#回傳結果:
5758
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5759
		#$result["error"],執行不正常結束的錯訊息陣列.
5760
		#$result["simpleError"],簡單表示的錯誤訊息.
5761
		#$result["function"],當前執行的函式名稱.
5762
		#$result["argu"],設置給予的參數.
5763
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5764
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5765
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5766
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5767
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5768
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5769
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5770
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5771
		#必填參數:
5772
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5773
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5774
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5775
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5776
		#可省略參數:
5777
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5778
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputs","formats");
5779
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
5780
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
5781
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5782
		#$conf["canBeEmptyString"]="false";
5783
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5784
		#$conf["canNotBeEmpty"]=array();
5785
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5786
		#$conf["canBeEmpty"]=array();
5787
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5788
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5789
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5790
		#$conf["skipableVariableName"]=array();
5791
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5792
		#$conf["skipableVariableType"]=array();
5793
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5794
		#$conf["skipableVarDefaultValue"]=array("");
5795
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5796
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5797
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5798
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5799
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5800
		#$conf["disallowAllSkipableVarNotExist"]="";
5801
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5802
		#$conf["arrayCountEqualCheck"][]=array();
5803
		#參考資料:
5804
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5805
		#備註:
5806
		#無.
5807
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5808
		unset($conf["variableCheck::checkArguments"]);
5809
 
5810
		#如果執行失敗
5811
		if($checkArguments["status"]==="false"){
5812
 
5813
			#設置錯誤訊息
5814
			$result["error"]=$checkArguments;
5815
 
5816
			#設置執行錯誤
5817
			$result["status"]="false";
5818
 
5819
			#回傳結果
5820
			return $result;
5821
 
5822
			}#if end
5823
 
5824
		#如果檢查不通過
5825
		if($checkArguments["passed"]==="false"){
5826
 
5827
			#設置錯誤訊息
5828
			$result["error"]=$checkArguments;
5829
 
5830
			#設置執行錯誤
5831
			$result["status"]="false";
5832
 
5833
			#回傳結果
5834
			return $result;
5835
 
5836
			}#if end
5837
 
5838
		#初始化符合的格式
5839
		$result["content"]=array();
5840
 
5841
		#預設沒有符合的格式
5842
		$result["found"]="false";
5843
 
5844
		#針對每個要檢查的字串
5845
		foreach($conf["inputs"] as $lineNo => $str){
5846
 
5847
			#函式說明:
5848
			#尋找字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
5849
			#回傳結果:
5850
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5851
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
5852
			#$result["function"],當前執行的函式名稱.
5853
			#$result["argu"],所使用的參數.
5854
			#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5855
			#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
5856
			#必填參數:
5857
			#$conf["input"],字串,要檢查的字串.
5858
			$conf["search::findSpecifyStrFormats"]["input"]=$str;
5859
			#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數(${keyWordVarName})組成.
5860
			$conf["search::findSpecifyStrFormats"]["formats"]=$conf["formats"];
5861
			#可省略參數:
5862
			#無.
5863
			#參考資料:
5864
			#無.
5865
			#備註:
5866
			#無.
5867
			$findSpecifyStrFormats=search::findSpecifyStrFormats($conf["search::findSpecifyStrFormats"]);
5868
			unset($conf["search::findSpecifyStrFormats"]);
5869
 
5870
			#如果執行失敗
5871
			if($findSpecifyStrFormats["status"]==="false"){
5872
 
5873
				#設置錯誤訊息
5874
				$result["error"]=$findSpecifyStrFormats;
5875
 
5876
				#設置執行錯誤
5877
				$result["status"]="false";
5878
 
5879
				#回傳結果
5880
				return $findSpecifyStrFormats;
5881
 
5882
				}#if end
5883
 
5884
			#如果有符合的格式
5885
			if($findSpecifyStrFormats["found"]==="true"){
5886
 
5887
				#暫存的陣列
5888
				$tmp=array();
5889
 
5890
				#設置行號
5891
				$tmp["lineNo"]=$lineNo;
5892
 
5893
				#設置找到的結果
5894
				$tmp["content"]=$findSpecifyStrFormats["content"];
5895
 
5896
				#儲存找到的結果
5897
				$result["content"][]=$tmp;
5898
 
5899
				#設置有找到
5900
				$result["found"]="true";
5901
 
5902
				}#if end
5903
 
5904
			}#foreach end
5905
 
5906
		#設置執行正常
5907
		$result["status"]="true";
5908
 
5909
		#回傳結果
5910
		return $result;
5911
 
5912
		}#function getMatchFormatsStrings end
5913
 
5914
	/*
5915
	#函式說明:
5916
	#尋找字串中是否含有 shell 變數.
5917
	#回傳結果:
5918
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5919
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
5920
	#$result["function"],當前執行的函式名稱.
5921
	#$result["argu"],所使用的參數.
5922
	#$result["founded"],是否有找到shell變數,"true"代表有找到,"false"代表沒有找到..
5923
	#必填參數:
5924
	#$conf["input"],字串,要檢查的字串..
5925
	$conf["input"]="";
5926
	#可省略參數:
5927
	#無.
5928
	#參考資料:
5929
	#無.
5930
	#備註:
5931
	#無.
5932
	*/
5933
	public static function findShellVar(&$conf){
5934
 
5935
		#初始化要回傳的結果
5936
		$result=array();
5937
 
5938
		#取得當前執行的函數名稱
5939
		$result["function"]=__FUNCTION__;
5940
 
5941
		#如果沒有參數
5942
		if(func_num_args()==0){
5943
 
5944
			#設置執行失敗
5945
			$result["status"]="false";
5946
 
5947
			#設置執行錯誤訊息
5948
			$result["error"]="函數".$result["function"]."需要參數";
5949
 
5950
			#回傳結果
5951
			return $result;
5952
 
66 liveuser 5953
			}#if end
3 liveuser 5954
 
5955
		#取得參數
5956
		$result["argu"]=$conf;
5957
 
5958
		#如果 $conf 不為陣列
5959
		if(gettype($conf)!=="array"){
5960
 
5961
			#設置執行失敗
5962
			$result["status"]="false";
5963
 
5964
			#設置執行錯誤訊息
5965
			$result["error"][]="\$conf變數須為陣列形態";
5966
 
5967
			#如果傳入的參數為 null
5968
			if($conf===null){
5969
 
5970
				#設置執行錯誤訊息
5971
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5972
 
5973
				}#if end
5974
 
5975
			#回傳結果
5976
			return $result;
5977
 
5978
			}#if end
5979
 
5980
		#檢查參數
5981
		#函式說明:
5982
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
5983
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5984
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
5985
		#$result["function"],當前執行的函式名稱.
5986
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5987
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5988
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5989
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
5990
		#必填寫的參數:
5991
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5992
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5993
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5994
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
5995
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
5996
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
5997
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5998
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5999
		#可以省略的參數:
6000
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
6001
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
6002
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6003
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","port","title","fullScreen","spicePassword");
6004
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
6005
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
6006
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6007
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"false",null);
6008
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
6009
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
6010
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
6011
		unset($conf["variableCheck::checkArguments"]);
6012
 
6013
		#如果檢查參數失敗
6014
		if($checkResult["status"]=="false"){
6015
 
6016
			#設置執行失敗
6017
			$result["status"]="false";
6018
 
6019
			#設置執行錯誤
6020
			$result["error"]=$checkResult;
6021
 
6022
			#回傳結果
6023
			return $result;
6024
 
6025
			}#if end
6026
 
6027
		#如果檢查參數不通過
6028
		if($checkResult["passed"]=="false"){
6029
 
6030
			#設置執行失敗
6031
			$result["status"]="false";
6032
 
6033
			#設置執行錯誤
6034
			$result["error"]=$checkResult;
6035
 
6036
			#回傳結果
6037
			return $result;
6038
 
6039
			}#if end
6040
 
6041
		#函式說明:
6042
		#將字串進行解析,取得兩個關鍵字中間的內容.
6043
		#回傳結果:
6044
		#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
6045
		#$result["function"],當前執行的函式內容.
6046
		#$result["error"],錯誤訊息陣列.
6047
		#$result["content"],取得的內容.
6048
		#$result["oriStr"],原始的內容.
6049
		#$result["found"],是否有找到符合條件的內容.
6050
		#必填參數:
6051
		#$conf["input"],字串,要處理的字串.
6052
		$conf["stringProcess::getContentBetweenKeyWord"]["input"]=$conf["input"];
6053
		#$conf["startKeyWord"],字串,開頭的關鍵字.
6054
		$conf["stringProcess::getContentBetweenKeyWord"]["startKeyWord"]="\${";
6055
		#$conf["endKeyWord"],字串,結束的關鍵字.
6056
		$conf["stringProcess::getContentBetweenKeyWord"]["endKeyWord"]="}";
6057
		#可省略參數:
6058
		#無.
6059
		#參考資料:
6060
		#無.
6061
		#備註:
6062
		#無.
6063
		$getContentBetweenKeyWord=stringProcess::getContentBetweenKeyWord($conf["stringProcess::getContentBetweenKeyWord"]);
6064
		unset($conf["stringProcess::getContentBetweenKeyWord"]);
6065
 
6066
		#如果執行失敗
6067
		if($getContentBetweenKeyWord["status"]==="false"){
6068
 
6069
			#設置執行失敗
6070
			$result["status"]="false";
6071
 
6072
			#設置執行錯誤
6073
			$result["error"]=$getContentBetweenKeyWord;
6074
 
6075
			#回傳結果
6076
			return $result;
6077
 
6078
			}#if end
6079
 
6080
		#如果沒有符合條件的內容
6081
		if($getContentBetweenKeyWord["found"]==="false"){
6082
 
6083
			#設置執行正常
6084
			$result["status"]="true";
6085
 
6086
			#設置沒有找到 shell 變數
6087
			$result["founded"]="false";
6088
 
6089
			#回傳結果
6090
			return $result;
6091
 
6092
			}#if end
6093
 
6094
		#函式說明:
6095
		#檢查字串裡面有無指定的關鍵字
6096
		#回傳結果:
6097
		#$result["status"],"true"代表執行成功,"false"代表執行失敗。
6098
		#$result["error"],錯誤訊息
6099
		#$result["function"],當前執行的函數名稱.
6100
		#$result["argu"],使用的參數.
6101
		#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
6102
		#$result["keyWordCount"],找到的關鍵字數量.
6103
		#必填參數:
6104
		#$conf["keyWord"],字串,想要搜尋的關鍵字.
6105
		$conf["search::findKeyWord"]["keyWord"]=" ";
6106
		#$conf["string"],字串,要被搜尋的字串內容
6107
		$conf["search::findKeyWord"]["string"]=$getContentBetweenKeyWord["content"];
6108
		#可省略參數:
6109
		#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
6110
		#$conf["completeEqual"]="true";
6111
		#參考資料:
6112
		#無.
6113
		#備註:
6114
		#無.
6115
		$findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
6116
		unset($conf["search::findKeyWord"]);
6117
 
6118
		#如果執行失敗
6119
		if($findKeyWord["status"]==="false"){
6120
 
6121
			#設置執行失敗
6122
			$result["status"]="false";
6123
 
6124
			#設置執行錯誤
6125
			$result["error"]=$findKeyWord;
6126
 
6127
			#回傳結果
6128
			return $result;
6129
 
6130
			}#if end
6131
 
6132
		#如果有符合條件的內容
6133
		if($findKeyWord["founded"]==="true"){
6134
 
6135
			#設置執行正常
6136
			$result["status"]="true";
6137
 
6138
			#設置沒有找到 shell 變數
6139
			$result["founded"]="false";
6140
 
6141
			#回傳結果
6142
			return $result;
6143
 
6144
			}#if end
6145
 
6146
		#執行到這邊代表真的有 shell 變數存在
6147
 
6148
		#設置執行正常
6149
		$result["status"]="true";
6150
 
6151
		#設置沒有找到 shell 變數
6152
		$result["founded"]="true";
6153
 
6154
		#回傳結果
6155
		return $result;
6156
 
6157
		}#function findShellVar end
6158
 
6159
	}#class search end
6160
 
6161
?>