Subversion Repositories php-qbpwcf

Rev

Rev 172 | Rev 226 | 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
 
218 liveuser 4266
		#初始化儲存解析好的變數資訊陣列
4267
		$result["parsedVar"]=array();
4268
 
3 liveuser 4269
		#另存一份input
66 liveuser 4270
		$modifiedInput=$conf["input"];
3 liveuser 4271
 
4272
		#預設分段的關鍵字為空
4273
		$keyWordPart=array();
4274
 
4275
		#預設該行的變數為空
4276
		$varPart=array();
4277
 
4278
		#關鍵字行的結構順序
4279
		$OderOfPartInLine=array();
4280
 
4281
		#無窮回圈,解析格式字串
4282
		while(true){
4283
 
4284
			#判斷 format 是否含有 "${"、"}" 關鍵字
4285
			#函式說明:
4286
			#檢查一個字串裡面是否有多個關鍵字
4287
			#回傳結果:
4288
			#$result["status"],"true"代表執行成功,"false"代表執行失敗.
4289
			#$result["error"],錯誤訊息.
4290
			#$result["function"],當前執行的函數名稱.
4291
			#$result["founded"],是否有找到的關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字.
4292
			#$result["foundedKeyWords"],找到的關鍵字.
4293
			#$result["foundedAll"],是否有找到全部的關鍵字,"true"代表有;"false"代表沒有.
4294
			#$result["argu"],使用的參數.
4295
			#必填參數:
4296
			#$conf["keyWords"],字串陣列,想要搜尋的關鍵字.
4297
			$conf["search::findManyKeyWords"]["keyWords"]=array("\${","}");
4298
			#$conf["string"],字串,要被搜尋的字串內容.
4299
			$conf["search::findManyKeyWords"]["string"]=$conf["format"];
4300
			#可省略參數:
4301
			#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合.
4302
			#$conf["completeEqual"]="true";
4303
			#參考資料:
4304
			#無.
4305
			#備註:
4306
			#無.
4307
			$findManyKeyWords=search::findManyKeyWords($conf["search::findManyKeyWords"]);
4308
			unset($conf["search::findManyKeyWords"]);
4309
 
4310
			#如果執行失敗
4311
			if($findManyKeyWords["status"]==="false"){
4312
 
4313
				#設置錯誤識別
4314
				$result["status"]="false";
4315
 
4316
				#設置錯誤訊息
4317
				$result["error"]=$findManyKeyWords;
4318
 
4319
				#回傳結果
4320
				return $result;
4321
 
4322
				}#if end
4323
 
4324
			#如果有 "${"、"}" 存在
4325
			if($findManyKeyWords["foundedAll"]==="true"){
4326
 
4327
				#debug
4328
				#var_dump(__LINE__,$findManyKeyWords);
4329
 
4330
				#取得 ${... 前面的部分
4331
				#函式說明:
4332
				#將字串特定關鍵字與其後面的內容剔除
4333
				#回傳結果:
4334
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4335
				#$result["error"],錯誤訊息陣列.
4336
				#$result["warning"],警告訊息鎮列.
4337
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4338
				#$result["function"],當前執行的函數名稱.
4339
				#$result["oriStr"],要處理的原始字串內容.
4340
				#$result["content"],處理好的的字串內容.
4341
				#$result["argu"],使用的參數.
4342
				#必填參數:
4343
				#$conf["stringIn"],字串,要處理的字串.
4344
				$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$conf["format"];
4345
				#$conf["keyWord"],字串,特定字串.
4346
				$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]="\${";
4347
				#可省略參數:
4348
				#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4349
				#$conf["deleteLastRepeatedOne"]="";
4350
				#參考資料:
4351
				#無.
4352
				#備註:
4353
				#無.
4354
				$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
4355
				unset($conf["stringProcess::delStrAfterKeyWord"]);
4356
 
4357
				#debug
4358
				#var_dump(__LINE__,$delStrAfterKeyWord);
4359
 
4360
				#如果執行失敗
4361
				if($delStrAfterKeyWord["status"]==="false"){
4362
 
4363
					#設置錯誤識別
4364
					$result["status"]="false";
4365
 
4366
					#設置錯誤訊息
4367
					$result["error"]=$delStrAfterKeyWord;
4368
 
4369
					#回傳結果
4370
					return $result;
4371
 
4372
					}#if end
4373
 
4374
				#如果要有關鍵字找不到
4375
				if($delStrAfterKeyWord["founded"]==="false"){
4376
 
4377
					#設置錯誤識別
4378
					$result["status"]="false";
4379
 
4380
					#設置錯誤訊息
4381
					$result["error"]=$delStrAfterKeyWord;
4382
 
4383
					#回傳結果
4384
					return $result;
4385
 
4386
					}#if end
4387
 
4388
				#如果前面有內容
4389
				if($delStrAfterKeyWord["content"]!==""){
4390
 
4391
					#儲存該行的關鍵字之一
4392
					$keyWordPart[]=$delStrAfterKeyWord["content"];
4393
 
4394
					#暫存的關鍵字資訊
4395
					$tmp=array("name"=>"keyWordPart","index"=>count($keyWordPart)-1,"value"=>$keyWordPart[count($keyWordPart)-1]);
4396
 
4397
					#設置順序資訊
4398
					$OderOfPartInLine[]=$tmp;
4399
 
4400
					}#if end
4401
 
4402
				#取得 }... 前面的部分
4403
				#函式說明:
4404
				#將字串特定關鍵字與其後面的內容剔除
4405
				#回傳結果:
4406
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4407
				#$result["error"],錯誤訊息陣列.
4408
				#$result["warning"],警告訊息鎮列.
4409
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4410
				#$result["function"],當前執行的函數名稱.
4411
				#$result["oriStr"],要處理的原始字串內容.
4412
				#$result["content"],處理好的的字串內容.
4413
				#$result["argu"],使用的參數.
4414
				#必填參數:
4415
				#$conf["stringIn"],字串,要處理的字串.
4416
				$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$delStrAfterKeyWord["deleted"];
4417
				#$conf["keyWord"],字串,特定字串.
4418
				$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]="}";
4419
				#可省略參數:
4420
				#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4421
				#$conf["deleteLastRepeatedOne"]="";
4422
				#參考資料:
4423
				#無.
4424
				#備註:
4425
				#無.
4426
				$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
4427
				unset($conf["stringProcess::delStrAfterKeyWord"]);
4428
 
4429
				#debug
4430
				#var_dump(__LINE__,$delStrAfterKeyWord);
4431
 
4432
				#如果執行失敗
4433
				if($delStrAfterKeyWord["status"]==="false"){
4434
 
4435
					#設置錯誤識別
4436
					$result["status"]="false";
4437
 
4438
					#設置錯誤訊息
4439
					$result["error"]=$delStrAfterKeyWord;
4440
 
4441
					#回傳結果
4442
					return $result;
4443
 
4444
					}#if end
4445
 
4446
				#如果要有關鍵字找不到
4447
				if($delStrAfterKeyWord["founded"]==="false"){
4448
 
4449
					#設置錯誤識別
4450
					$result["status"]="false";
4451
 
4452
					#設置錯誤訊息
4453
					$result["error"]=$delStrAfterKeyWord;
4454
 
4455
					#回傳結果
4456
					return $result;
4457
 
4458
					}#if end
4459
 
4460
				#var_dump($delStrAfterKeyWord["content"]."}");
4461
 
4462
				#儲存該行的變數名稱之一
4463
				$varPart[]=$delStrAfterKeyWord["content"]."}";
4464
 
4465
				#移除 "}" 其面的內容
4466
				#函式說明:
4467
				#將字串特定關鍵字與其前面的內容剔除
4468
				#回傳結果:
4469
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4470
				#$result["error"],錯誤訊息陣列.
4471
				#$result["warning"],警告訊息鎮列.
4472
				#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4473
				#$result["function"],當前執行的函數名稱.
4474
				#$result["argu"],使用的參數.
4475
				#$result["oriStr"],要處理的原始字串內容.
4476
				#$result["content"],處理好的的字串內容.
4477
				#$result["deleted"],被移除的內容.
4478
				#必填參數:
4479
				#$conf["stringIn"],字串,要處理的字串.
4480
				$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$conf["format"];
4481
				#$conf["keyWord"],字串,特定字串.
4482
				$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]="}";
4483
				#可省略參數:
4484
				#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
4485
				#$conf["recursive"]="true";
4486
				#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
4487
				#$conf["lastResult"]=$delStrBeforeKeyWord;
4488
				#參考資料:
4489
				#無.
4490
				#備註:
4491
				#無.
4492
				$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4493
				unset($conf["stringProcess::delStrBeforeKeyWord"]);
4494
 
4495
				#如果執行失敗
4496
				if($delStrBeforeKeyWord["status"]==="false"){
4497
 
4498
					#設置錯誤識別
4499
					$result["status"]="false";
4500
 
4501
					#設置錯誤訊息
4502
					$result["error"]=$delStrBeforeKeyWord;
4503
 
4504
					#回傳結果
4505
					return $result;
4506
 
4507
					}#if end
4508
 
4509
				#如果要有關鍵字找不到
4510
				if($delStrBeforeKeyWord["founded"]==="false"){
4511
 
4512
					#設置錯誤識別
4513
					$result["status"]="false";
4514
 
4515
					#設置錯誤訊息
4516
					$result["error"]=$delStrBeforeKeyWord;
4517
 
4518
					#回傳結果
4519
					return $result;
4520
 
4521
					}#if end
4522
 
66 liveuser 4523
				#debug
4524
				#var_dump(__LINE__,$delStrBeforeKeyWord);
4525
 
3 liveuser 4526
				#取得剩下的格式字串部分
4527
				$conf["format"]=$delStrBeforeKeyWord["content"];
4528
 
4529
				#暫存的關鍵字資訊
4530
				$tmp=array("name"=>"varPart","index"=>count($varPart)-1,"value"=>$varPart[count($varPart)-1]);
4531
 
4532
				#設置順序資訊
4533
				$OderOfPartInLine[]=$tmp;
4534
 
4535
				}#if end
4536
 
4537
			#反之
4538
			else{
4539
 
66 liveuser 4540
				#若有剩下的內容
4541
				if(!empty($conf["format"])){
4542
 
4543
					#儲存剩下的內容為關鍵字之一
4544
					$keyWordPart[]=$conf["format"];
4545
 
4546
					#暫存的關鍵字資訊
4547
					$tmp=array("name"=>"keyWordPart","index"=>count($keyWordPart)-1,"value"=>$keyWordPart[count($keyWordPart)-1]);
4548
 
4549
					#設置順序資訊
4550
					$OderOfPartInLine[]=$tmp;
4551
 
4552
					}#if end
218 liveuser 4553
 
3 liveuser 4554
				#結束格式字串的解析
4555
				break;
4556
 
4557
				}#else end
4558
 
4559
			}#while end
4560
 
218 liveuser 4561
		#如果沒有解析出格式字串,代表關鍵字為空字串.
4562
		if($OderOfPartInLine===array()){
4563
 
4564
			#儲存剩下的內容為關鍵字之一
4565
			$keyWordPart[]=$conf["format"];
4566
 
4567
			#暫存的關鍵字資訊
4568
			$tmp=array("name"=>"keyWordPart","index"=>0,"value"=>$conf["format"]);
4569
 
4570
			#設置順序資訊
4571
			$OderOfPartInLine[]=$tmp;
4572
 
4573
			}#if end
4574
 
3 liveuser 4575
		#debug
4576
		#var_dump(__LINE__,$OderOfPartInLine);
4577
 
4578
		#如果有關鍵字片段與變數的順序存在
4579
		if( count($OderOfPartInLine)>0 ){
4580
 
4581
			#debug
4582
			#var_dump(__LINE__,$OderOfPartInLine);
4583
 
66 liveuser 4584
			#預設一開始 varPart 的計數為 0
4585
			$varPartCount=0;
4586
 
3 liveuser 4587
			#針對每個資訊
4588
			foreach($OderOfPartInLine as $index=>$condition){
4589
 
4590
				#debug
4591
				#var_dump(__LINE__,$index,$condition);
4592
 
4593
				#判斷資訊
4594
				switch($condition["name"]){
4595
 
4596
					#如果是 "keyWordPart"
4597
					case "keyWordPart":
4598
 
218 liveuser 4599
						#確認是否開頭有符號
3 liveuser 4600
 
4601
						#函式說明:
4602
						#取得關鍵字在字串的哪個位置(字首,字尾,中間)
4603
						#回傳結果:
4604
						#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
4605
						#$result["error"],錯誤訊息陣列.
4606
						#$result["function"],當前執行的函數名稱.
4607
						#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
4608
						#$result["argu"],傳入的參數.
4609
						#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
4610
						#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
4611
						#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
4612
						#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
4613
						#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
4614
						#必填參數:
4615
						#$conf["inputStr"],字串,被搜尋的字串.
4616
						$conf["search::findKeyWordPosition"]["inputStr"]=$modifiedInput;
4617
						#$conf["keyWord"],字串,關鍵字.
4618
						$conf["search::findKeyWordPosition"]["keyWord"]=$condition["value"];
4619
						#可省略參數:
4620
						#無.
4621
						#參考資料:
4622
						#http://php.net/manual/en/function.strpos.php
4623
						#備註:
4624
						#無.
4625
						$findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
4626
						unset($conf["search::findKeyWordPosition"]);
4627
 
218 liveuser 4628
						/*
3 liveuser 4629
						#debug
218 liveuser 4630
						if($condition["value"]===""){
4631
 
4632
							#debug
4633
							var_dump(__LINE__,$findKeyWordPosition);
4634
 
4635
							}#if end
4636
						*/
4637
 
3 liveuser 4638
						#如果執行失敗
4639
						if($findKeyWordPosition["status"]==="false"){
4640
 
4641
							#設置錯誤識別
4642
							$result["status"]="false";
4643
 
4644
							#設置錯誤訊息
4645
							$result["error"]=$findKeyWordPosition;
4646
 
4647
							#回傳結果
4648
							return $result;
4649
 
4650
							}#if end
4651
 
4652
						#如果沒有符合
4653
						if($findKeyWordPosition["found"]==="false"){
4654
 
218 liveuser 4655
							#設置執行正常
3 liveuser 4656
							$result["status"]="true";
4657
 
4658
							#設置沒有符合格式
4659
							$result["found"]="false";
4660
 
4661
							#回傳結果
4662
							return $result;
4663
 
4664
							}#if end
4665
 
4666
						#如果關鍵字不在開頭
4667
						if($findKeyWordPosition["head"]==="false"){
4668
 
218 liveuser 4669
							#設置執行正常
3 liveuser 4670
							$result["status"]="true";
4671
 
4672
							#設置沒有符合格式
4673
							$result["found"]="false";
4674
 
4675
							#回傳結果
4676
							return $result;
4677
 
4678
							}#if end
4679
 
4680
						#函式說明:
4681
						#將字串特定關鍵字與其前面的內容剔除
4682
						#回傳結果:
4683
						#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4684
						#$result["error"],錯誤訊息陣列.
4685
						#$result["warning"],警告訊息鎮列.
4686
						#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4687
						#$result["function"],當前執行的函數名稱.
4688
						#$result["argu"],使用的參數.
4689
						#$result["oriStr"],要處理的原始字串內容.
4690
						#$result["content"],處理好的的字串內容.
4691
						#$result["deleted"],被移除的內容.
4692
						#必填參數:
4693
						#$conf["stringIn"],字串,要處理的字串.
4694
						$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$modifiedInput;
4695
						#$conf["keyWord"],字串,特定字串.
4696
						$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$condition["value"];
4697
						#可省略參數:
4698
						#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
4699
						#$conf["recursive"]="true";
4700
						#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
4701
						#$conf["lastResult"]=$delStrBeforeKeyWord;
4702
						#參考資料:
4703
						#無.
4704
						#備註:
4705
						#無.
4706
						$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
4707
						unset($conf["stringProcess::delStrBeforeKeyWord"]);
4708
 
218 liveuser 4709
						/*
3 liveuser 4710
						#debug
218 liveuser 4711
						if($condition["value"]===" "){
3 liveuser 4712
 
218 liveuser 4713
							#debug
4714
							var_dump(__LINE__,$delStrBeforeKeyWord);
4715
 
4716
							}#if end
4717
						*/
4718
 
3 liveuser 4719
						#如果執行失敗
4720
						if($delStrBeforeKeyWord["status"]==="false"){
4721
 
4722
							#設置錯誤識別
4723
							$result["status"]="false";
4724
 
4725
							#設置錯誤訊息
4726
							$result["error"]=$delStrBeforeKeyWord;
4727
 
4728
							#回傳結果
4729
							return $result;
4730
 
4731
							}#if end
4732
 
4733
						#如果沒有符合
4734
						if($delStrBeforeKeyWord["founded"]==="false"){
4735
 
4736
							#設置錯誤識別
4737
							$result["status"]="true";
4738
 
4739
							#設置沒有符合格式
4740
							$result["found"]="false";
4741
 
4742
							#回傳結果
4743
							return $result;
4744
 
4745
							}#if end
4746
 
4747
						#執行到這邊代表有符合
4748
 
4749
						#取得剩下未判斷是否符合的項目
4750
						$modifiedInput=$delStrBeforeKeyWord["content"];
4751
 
4752
						#換找下個資訊有無符合
4753
						continue 2;
4754
 
4755
						#結束 switch
4756
						break;
4757
 
4758
					#如果是 "varPart"
4759
					case "varPart":
4760
 
66 liveuser 4761
						#計數第幾個 varPart
4762
						$varPartCount++;
4763
 
3 liveuser 4764
						#取得變數名稱,亦即去掉開頭的 "${" 跟結尾的 "}"
4765
						$varName=substr($OderOfPartInLine[($index)]["value"],2,strlen($OderOfPartInLine[($index)]["value"])-3);
4766
 
4767
						#如果後面沒有 $OderOfPartInLine 了
4768
						if(!isset($OderOfPartInLine[($index+1)])){
4769
 
66 liveuser 4770
							#取得變數的數值
4771
							$varVal=$modifiedInput;
4772
 
4773
							/*
4774
 
3 liveuser 4775
							#代表有符合所有條件
4776
 
4777
							#設置解析好的變數
4778
							$result["content"][]=$modifiedInput;
4779
 
4780
							#設置執行正常的識別
4781
							$result["status"]="true";
4782
 
4783
							#設置有符合格式
4784
							$result["found"]="true";
4785
 
4786
							#回傳結果
4787
							return $result;
4788
 
66 liveuser 4789
							*/
4790
 
3 liveuser 4791
							}#if end
66 liveuser 4792
 
3 liveuser 4793
						#執行到這邊代表後面還有 $OderOfPartInLine
66 liveuser 4794
						else{
3 liveuser 4795
 
66 liveuser 4796
							#debug
4797
							#var_dump(__LINE__,$OderOfPartInLine[($index+1)]);
3 liveuser 4798
 
66 liveuser 4799
							#如果後面的內容不是 keyWordPart
4800
							if($OderOfPartInLine[($index+1)]["name"]!=="keyWordPart"){
3 liveuser 4801
 
66 liveuser 4802
								#設置錯誤識別
4803
								$result["status"]="false";
4804
 
4805
								#設置錯誤訊息
4806
								$result["error"][]="multi continued varName not supported";
4807
 
4808
								#回傳結果
4809
								return $result;
3 liveuser 4810
 
66 liveuser 4811
								}#if end
4812
 
4813
							#執行到這邊代表為 varPart
4814
 
4815
							#函式說明:
4816
							#取得關鍵字在字串的哪個位置(字首,字尾,中間)
4817
							#回傳結果:
4818
							#$result["status"],執行成功與否,若爲"true",代表執行成功,若爲"false"代表執失敗。
4819
							#$result["error"],錯誤訊息陣列.
4820
							#$result["function"],當前執行的函數名稱.
4821
							#$result["found"],是否有關鍵字存在,若為"true",代表存在;反之為"false".
4822
							#$result["argu"],傳入的參數.
4823
							#$result["head"],關鍵字是否在字串的開頭,"true"代表是,"false"代表不是.
4824
							#$result["tail"],關鍵字是否在字串的尾端,"true"代表是,"false"代表不是.
4825
							#$result["center"],關鍵字是否在字串的中間,"true"代表是,"false"代表不是.
4826
							#$result["indexS"],關鍵字在被搜尋字串的哪個位置開始.
4827
							#$result["indexE"],關鍵字在被搜尋字串的哪個位置結束.
4828
							#必填參數:
4829
							#$conf["inputStr"],字串,被搜尋的字串.
4830
							$conf["search::findKeyWordPosition"]["inputStr"]=$modifiedInput;
4831
							#$conf["keyWord"],字串,關鍵字.
4832
							$conf["search::findKeyWordPosition"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
4833
							#可省略參數:
4834
							#無.
4835
							#參考資料:
4836
							#http://php.net/manual/en/function.strpos.php
4837
							#備註:
4838
							#無.
4839
							$findKeyWordPosition=search::findKeyWordPosition($conf["search::findKeyWordPosition"]);
4840
							unset($conf["search::findKeyWordPosition"]);
3 liveuser 4841
 
66 liveuser 4842
							#debug
4843
							#var_dump(__LINE__,$findKeyWordPosition);
3 liveuser 4844
 
66 liveuser 4845
							#如果執行失敗
4846
							if($findKeyWordPosition["status"]==="false"){
3 liveuser 4847
 
66 liveuser 4848
								#設置錯誤識別
4849
								$result["status"]="false";
4850
 
4851
								#設置錯誤訊息
4852
								$result["error"]=$findKeyWordPosition;
4853
 
4854
								#回傳結果
4855
								return $result;
3 liveuser 4856
 
66 liveuser 4857
								}#if end
4858
 
4859
							#如果沒有符合
4860
							if($findKeyWordPosition["found"]==="false"){
3 liveuser 4861
 
66 liveuser 4862
								#設置執行狀態識別
4863
								$result["status"]="true";
4864
 
4865
								#設置沒有符合格式
4866
								$result["found"]="false";
4867
 
4868
								#回傳結果
4869
								return $result;
3 liveuser 4870
 
66 liveuser 4871
								}#if end
3 liveuser 4872
 
66 liveuser 4873
							#執行到這邊代表有符合關鍵字
3 liveuser 4874
 
66 liveuser 4875
							#函式說明:
4876
							#將字串特定關鍵字與其後面的內容剔除
4877
							#回傳結果:
4878
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4879
							#$result["error"],錯誤訊息陣列.
4880
							#$result["warning"],警告訊息鎮列.
4881
							#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
4882
							#$result["function"],當前執行的函數名稱.
4883
							#$result["oriStr"],要處理的原始字串內容.
4884
							#$result["content"],處理好的的字串內容.
4885
							#$result["deleted"],被移除的內容.
4886
							#$result["argu"],使用的參數.
4887
							#必填參數:
4888
							#$conf["stringIn"],字串,要處理的字串.
4889
							$conf["stringProcess::delStrAfterKeyWord"]["stringIn"]=$modifiedInput;
4890
							#$conf["keyWord"],字串,特定字串.
4891
							$conf["stringProcess::delStrAfterKeyWord"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
4892
							#可省略參數:
4893
							#$conf["deleteLastRepeatedOne"],字串,預設為"false";若為"true"則代表連續遇到同 $conf["keyWord"] 的內容,要將移除內容的起點往後移動到為後一個 $conf["keyWord"].
4894
							#$conf["deleteLastRepeatedOne"]="";
4895
							#參考資料:
4896
							#無.
4897
							#備註:
4898
							#無.
4899
							$delStrAfterKeyWord=stringProcess::delStrAfterKeyWord($conf["stringProcess::delStrAfterKeyWord"]);
218 liveuser 4900
							unset($conf["stringProcess::delStrAfterKeyWord"]);
3 liveuser 4901
 
66 liveuser 4902
							#如果執行失敗
4903
							if($delStrAfterKeyWord["status"]==="false"){
3 liveuser 4904
 
66 liveuser 4905
								#設置錯誤識別
4906
								$result["status"]="false";
4907
 
4908
								#設置錯誤訊息
4909
								$result["error"]=$delStrAfterKeyWord;
4910
 
4911
								#回傳結果
4912
								return $result;
4913
 
4914
								}#if end
4915
 
4916
							#如果沒有符合
4917
							if($delStrAfterKeyWord["founded"]==="false"){
4918
 
4919
								#設置執行狀態識別
4920
								$result["status"]="true";
4921
 
4922
								#設置沒有符合格式
4923
								$result["found"]="false";
4924
 
4925
								#回傳結果
4926
								return $result;
4927
 
4928
								}#if end
4929
 
4930
							#另存變數的數值
4931
							$varVal=$delStrAfterKeyWord["content"];
3 liveuser 4932
 
66 liveuser 4933
							}#else end
4934
 
4935
						#如果有設置 $conf["varEqual"]
4936
						if(isset($conf["varEqual"])){
4937
 
4938
							#debug
4939
							#var_dump(__LINE__,$conf["varEqual"]);
4940
 
4941
							#debug
4942
							#var_dump(__LINE__,$varPartCount);
4943
 
4944
							#若有設置該變數的條件
4945
							if(isset($conf["varEqual"][$varPartCount-1])){
3 liveuser 4946
 
66 liveuser 4947
								#取得之
4948
								$varEqual=$conf["varEqual"][$varPartCount-1];
3 liveuser 4949
 
66 liveuser 4950
								#如果條件不為 null,代表變數的數值要等於 $varEqual 才算符合
4951
								if($varEqual!==null){
4952
 
4953
									#如果數值不符合
4954
									if($varVal!==$varEqual){
4955
 
4956
										#設置執行狀態識別
4957
										$result["status"]="true";
4958
 
4959
										#設置沒有符合格式
4960
										$result["found"]="false";
4961
 
4962
										#設置解析好的變數
4963
										$result["content"][]=$varVal;
4964
 
4965
										#用變數名稱來儲存
4966
										$result["parsedVar"][$varName][]=$varVal;
4967
 
4968
										#回傳結果
4969
										return $result;
4970
 
4971
										}#if end
4972
 
4973
									}#if end
4974
 
4975
								#反之 $varVal 現階段可為任意數值
4976
								else{
4977
 
4978
									#如果有設置額外條件
4979
									if(isset($conf["varCon"])){
4980
 
4981
										#取得其額外條件
4982
										$varCon=$conf["varCon"][$varPartCount-1];
4983
 
4984
										#如果有設置額外條件
4985
										if($varCon!==null){
4986
 
4987
											#檢查額外條件參數
4988
											#函式說明:
4989
											#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4990
											#回傳結果:
4991
											#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4992
											#$result["error"],執行不正常結束的錯訊息陣列.
4993
											#$result["simpleError"],簡單表示的錯誤訊息.
4994
											#$result["function"],當前執行的函式名稱.
4995
											#$result["argu"],設置給予的參數.
4996
											#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
4997
											#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
4998
											#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
4999
											#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5000
											#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5001
											#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5002
											#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5003
											#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5004
											#必填參數:
5005
											#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5006
											$conf["variableCheck::checkArguments"]["varInput"]=&$varCon;
5007
											#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5008
											$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5009
											#可省略參數:
5010
											#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5011
											#$conf["mustBeFilledVariableName"]=array();
5012
											#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
5013
											#$conf["mustBeFilledVariableType"]=array();
5014
											#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5015
											#$conf["canBeEmptyString"]="false";
5016
											#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5017
											#$conf["canNotBeEmpty"]=array();
5018
											#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5019
											#$conf["canBeEmpty"]=array();
5020
											#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5021
											#$conf["skipableVariableCanNotBeEmpty"]=array();
5022
											#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5023
											$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("head","no_head","tail","no_tail");
5024
											#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5025
											$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string");
5026
											#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5027
											#$conf["skipableVarDefaultValue"]=array("");
5028
											#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5029
											#$conf["variableCheck::checkArguments"]["disallowAllSkipableVarIsEmpty"]="";
5030
											#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5031
											#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5032
											#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5033
											$conf["variableCheck::checkArguments"]["disallowAllSkipableVarNotExist"]="true";
5034
											#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5035
											#$conf["arrayCountEqualCheck"][]=array();
5036
											#參考資料:
5037
											#array_keys=>http://php.net/manual/en/function.array-keys.php
5038
											#備註:
5039
											#無.
5040
											$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5041
											unset($conf["variableCheck::checkArguments"]);
5042
 
5043
											#如果執行失敗
5044
											if($checkArguments["status"]==="false"){
5045
 
5046
												#設置錯誤識別
5047
												$result["status"]="false";
5048
 
5049
												#設置錯誤訊息
5050
												$result["error"]=$checkArguments;
5051
 
5052
												#回傳結果
5053
												return $result;
5054
 
5055
												}#if end
5056
 
5057
											#如果檢查不通過
5058
											if($checkArguments["passed"]==="false"){
5059
 
5060
												#設置錯誤識別
5061
												$result["status"]="false";
5062
 
5063
												#設置錯誤訊息
5064
												$result["error"]=$checkArguments;
5065
 
5066
												#回傳結果
5067
												return $result;
5068
 
5069
												}#if end
5070
 
5071
											#針對每個額外條件
5072
											foreach($varCon as $con => $cVal){
5073
 
5074
												#判斷額外條件
5075
												switch($con){
5076
 
5077
													#如果是 "head"
5078
													case "head":
5079
 
5080
														#函式說明:
5081
														#取得符合特定字首與字尾的字串
5082
														#回傳結果:
5083
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5084
														#$result["function"],當前執行的函數名稱.
5085
														#$result["error"],錯誤訊息陣列.
5086
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5087
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5088
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5089
														#$result["argu"],使用的參數.
5090
														#必填參數:
5091
														#$conf["checkString"],字串,要檢查的字串.
5092
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5093
														#可省略參數:
5094
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5095
														$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5096
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5097
														#$conf["tailWord"]="";
5098
														#參考資料:
5099
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5100
														#備註:
5101
														#無.
5102
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5103
														unset($conf["search::getMeetConditionsString"]);
5104
 
5105
														#如果執行失敗
5106
														if($getMeetConditionsString["status"]==="false"){
5107
 
5108
															#設置錯誤識別
5109
															$result["status"]="false";
5110
 
5111
															#設置錯誤訊息
5112
															$result["error"]=$getMeetConditionsString;
5113
 
5114
															#回傳結果
5115
															return $result;
5116
 
5117
															}#if end
5118
 
5119
														#如果沒有需要的關鍵字
5120
														if($getMeetConditionsString["founded"]==="false"){
5121
 
5122
															#設置執行正常識別
5123
															$result["status"]="true";
5124
 
5125
															#設置錯誤訊息
5126
															$result["found"]="false";
5127
 
5128
															#設置解析好的變數
5129
															$result["content"][]=$varVal;
5130
 
5131
															#用變數名稱來儲存
5132
															$result["parsedVar"][$varName][]=$varVal;
5133
 
5134
															#回傳結果
5135
															return $result;
5136
 
5137
															}#if end
5138
 
5139
														#跳出 switch
5140
														break;
5141
 
5142
													#如果是 "no_head"
5143
													case "no_head":
5144
 
5145
														#函式說明:
5146
														#取得符合特定字首與字尾的字串
5147
														#回傳結果:
5148
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5149
														#$result["function"],當前執行的函數名稱.
5150
														#$result["error"],錯誤訊息陣列.
5151
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5152
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5153
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5154
														#$result["argu"],使用的參數.
5155
														#必填參數:
5156
														#$conf["checkString"],字串,要檢查的字串.
5157
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5158
														#可省略參數:
5159
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5160
														$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5161
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5162
														#$conf["tailWord"]="";
5163
														#參考資料:
5164
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5165
														#備註:
5166
														#無.
5167
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5168
														unset($conf["search::getMeetConditionsString"]);
5169
 
5170
														#如果執行失敗
5171
														if($getMeetConditionsString["status"]==="false"){
5172
 
5173
															#設置錯誤識別
5174
															$result["status"]="false";
5175
 
5176
															#設置錯誤訊息
5177
															$result["error"]=$getMeetConditionsString;
5178
 
5179
															#回傳結果
5180
															return $result;
5181
 
5182
															}#if end
5183
 
5184
														#如果有不需要的關鍵字
5185
														if($getMeetConditionsString["founded"]==="true"){
5186
 
5187
															#設置執行正常識別
5188
															$result["status"]="true";
5189
 
5190
															#設置錯誤訊息
5191
															$result["found"]="false";
5192
 
5193
															#設置解析好的變數
5194
															$result["content"][]=$varVal;
5195
 
5196
															#用變數名稱來儲存
5197
															$result["parsedVar"][$varName][]=$varVal;
5198
 
5199
															#回傳結果
5200
															return $result;
5201
 
5202
															}#if end
5203
 
5204
														#跳出 switch
5205
														break;
5206
 
5207
													#如果是 "tail"
5208
													case "tail":
5209
 
5210
														#函式說明:
5211
														#取得符合特定字首與字尾的字串
5212
														#回傳結果:
5213
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5214
														#$result["function"],當前執行的函數名稱.
5215
														#$result["error"],錯誤訊息陣列.
5216
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5217
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5218
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5219
														#$result["argu"],使用的參數.
5220
														#必填參數:
5221
														#$conf["checkString"],字串,要檢查的字串.
5222
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5223
														#可省略參數:
5224
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5225
														#$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5226
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5227
														$conf["search::getMeetConditionsString"]["tailWord"]=$cVal;
5228
														#參考資料:
5229
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5230
														#備註:
5231
														#無.
5232
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5233
														unset($conf["search::getMeetConditionsString"]);
5234
 
5235
														#如果執行失敗
5236
														if($getMeetConditionsString["status"]==="false"){
5237
 
5238
															#設置錯誤識別
5239
															$result["status"]="false";
5240
 
5241
															#設置錯誤訊息
5242
															$result["error"]=$getMeetConditionsString;
5243
 
5244
															#回傳結果
5245
															return $result;
5246
 
5247
															}#if end
5248
 
5249
														#如果無需要的關鍵字
5250
														if($getMeetConditionsString["founded"]==="false"){
5251
 
5252
															#設置執行正常識別
5253
															$result["status"]="true";
5254
 
5255
															#設置錯誤訊息
5256
															$result["found"]="false";
5257
 
5258
															#設置解析好的變數
5259
															$result["content"][]=$varVal;
5260
 
5261
															#用變數名稱來儲存
5262
															$result["parsedVar"][$varName][]=$varVal;
5263
 
5264
															#回傳結果
5265
															return $result;
5266
 
5267
															}#if end
5268
 
5269
														#跳出 switch
5270
														break;
5271
 
5272
													#如果是 "no_tail"
5273
													case "no_tail":
5274
 
5275
														#函式說明:
5276
														#取得符合特定字首與字尾的字串
5277
														#回傳結果:
5278
														#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5279
														#$result["function"],當前執行的函數名稱.
5280
														#$result["error"],錯誤訊息陣列.
5281
														#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5282
														#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5283
														#$result["returnString"],爲符合字首字、尾條件的字串內容。
5284
														#$result["argu"],使用的參數.
5285
														#必填參數:
5286
														#$conf["checkString"],字串,要檢查的字串.
5287
														$conf["search::getMeetConditionsString"]["checkString"]=$varVal;
5288
														#可省略參數:
5289
														#$conf["frontWord"],字串,用來檢查字首應該要有什麼字串,預設不指定.
5290
														#$conf["search::getMeetConditionsString"]["frontWord"]=$cVal;
5291
														#$conf["tailWord"],字串,用來檢查字尾應該要有什麼字串,預設不指定.
5292
														$conf["search::getMeetConditionsString"]["tailWord"]=$cVal;
5293
														#參考資料:
5294
														#str_spilt(),可以將字串依照字母分割成一個個陣列字串。
5295
														#備註:
5296
														#無.
5297
														$getMeetConditionsString=search::getMeetConditionsString($conf["search::getMeetConditionsString"]);
5298
														unset($conf["search::getMeetConditionsString"]);
5299
 
5300
														#如果執行失敗
5301
														if($getMeetConditionsString["status"]==="false"){
5302
 
5303
															#設置錯誤識別
5304
															$result["status"]="false";
5305
 
5306
															#設置錯誤訊息
5307
															$result["error"]=$getMeetConditionsString;
5308
 
5309
															#回傳結果
5310
															return $result;
5311
 
5312
															}#if end
5313
 
5314
														#如果有無需要的關鍵字
5315
														if($getMeetConditionsString["founded"]==="true"){
5316
 
5317
															#設置執行正常識別
5318
															$result["status"]="true";
5319
 
5320
															#設置錯誤訊息
5321
															$result["found"]="false";
5322
 
5323
															#設置解析好的變數
5324
															$result["content"][]=$varVal;
5325
 
5326
															#用變數名稱來儲存
5327
															$result["parsedVar"][$varName][]=$varVal;
5328
 
5329
															#回傳結果
5330
															return $result;
5331
 
5332
															}#if end
5333
 
5334
														#跳出 switch
5335
														break;
5336
 
5337
													#若是其他額外條件
5338
													default:
5339
 
5340
														#設置錯誤識別
5341
														$result["status"]="false";
5342
 
5343
														#設置錯誤訊息
5344
														$result["error"][]="not supported condition \"".$con."\"";
5345
 
5346
														#設置錯誤訊息
5347
														$result["error"][]=$checkArguments;
5348
 
5349
														#回傳結果
5350
														return $result;
5351
 
5352
													}#switch end
5353
 
5354
												}#foreach end
5355
 
5356
											}#if end
5357
 
5358
										}#if end
5359
 
5360
									}#else end
5361
 
5362
								}#if end
3 liveuser 5363
 
5364
							}#if end
5365
 
5366
						#設置解析好的變數
66 liveuser 5367
						$result["content"][]=$varVal;
3 liveuser 5368
 
5369
						#用變數名稱來儲存
66 liveuser 5370
						$result["parsedVar"][$varName][]=$varVal;
3 liveuser 5371
 
66 liveuser 5372
						#若後面還有特定關鍵字
5373
						if(isset($OderOfPartInLine[($index+1)]["value"])){
3 liveuser 5374
 
66 liveuser 5375
							#函式說明:
5376
							#將字串特定關鍵字與其前面的內容剔除
5377
							#回傳結果:
5378
							#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5379
							#$result["error"],錯誤訊息陣列.
5380
							#$result["warning"],警告訊息鎮列.
5381
							#$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
5382
							#$result["function"],當前執行的函數名稱.
5383
							#$result["argu"],使用的參數.
5384
							#$result["oriStr"],要處理的原始字串內容.
5385
							#$result["content"],處理好的的字串內容.
5386
							#$result["deleted"],被移除的內容.
5387
							#必填參數:
5388
							#$conf["stringIn"],字串,要處理的字串.
5389
							$conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$modifiedInput;
5390
							#$conf["keyWord"],字串,特定字串.
5391
							$conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=$OderOfPartInLine[($index+1)]["value"];
5392
							#可省略參數:
5393
							#$conf["recursive"],字串,預設為"false"代表找到一個關鍵字就會停止;"true"代表會即重複執行,知道沒有關鍵字為止.
5394
							#$conf["recursive"]="true";
5395
							#$conf["lastResult"],陣列,本函式前次執行的結果,若沒有找到關鍵字,則會改回傳該內容.
5396
							#$conf["lastResult"]=$delStrBeforeKeyWord;
5397
							#參考資料:
5398
							#無.
5399
							#備註:
5400
							#無.
5401
							$delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
5402
							unset($conf["stringProcess::delStrBeforeKeyWord"]);
3 liveuser 5403
 
66 liveuser 5404
							#debug
5405
							#var_dump(__LINE__,$delStrBeforeKeyWord);
3 liveuser 5406
 
66 liveuser 5407
							#如果執行失敗
5408
							if($delStrBeforeKeyWord["status"]==="false"){
3 liveuser 5409
 
66 liveuser 5410
								#設置錯誤識別
5411
								$result["status"]="false";
5412
 
5413
								#設置錯誤訊息
5414
								$result["error"]=$delStrBeforeKeyWord;
5415
 
5416
								#回傳結果
5417
								return $result;
3 liveuser 5418
 
66 liveuser 5419
								}#if end
5420
 
5421
							#如果該存在的關鍵字不在
5422
							if($delStrBeforeKeyWord["founded"]==="false"){
3 liveuser 5423
 
66 liveuser 5424
								#設置錯誤識別
5425
								$result["status"]="true";
5426
 
5427
								#設置沒有符合格式
5428
								$result["found"]="false";
5429
 
5430
								#回傳結果
5431
								return $result;
5432
 
5433
								}#if end
3 liveuser 5434
 
66 liveuser 5435
							#取得剩下未判斷是否符合的項目
5436
							$modifiedInput=$OderOfPartInLine[($index+1)]["value"].$delStrBeforeKeyWord["content"];
5437
 
5438
							#debug
5439
							#var_dump(__LINE__,$modifiedOriLineContent);
5440
 
3 liveuser 5441
							}#if end
5442
 
5443
						#換找下個資訊有無符合
5444
						continue 2;
5445
 
5446
						break;
5447
 
5448
					#其他狀況
5449
					default:
5450
 
5451
						#設置錯誤識別
5452
						$result["status"]="false";
5453
 
5454
						#設置錯誤訊息
5455
						$result["error"][]="unexpected name value";
5456
 
5457
						#設置錯誤訊息
5458
						$result["error"][]=$condition;
5459
 
5460
						#回傳結果
5461
						return $result;
5462
 
5463
					}#switch end
5464
 
5465
				}#foreach end
5466
 
5467
			#執行到這邊代表該行有符合關鍵字的結構
5468
 
5469
			#設置執行正常識別
5470
			$result["status"]="true";
5471
 
5472
			#設置有符合格式
5473
			$result["found"]="true";
5474
 
5475
			#回傳結果
5476
			return $result;
5477
 
5478
			}#if end
5479
 
5480
		#format參數有問題
5481
		else{
5482
 
5483
			#設置錯誤識別
5484
			$result["status"]="false";
5485
 
5486
			#設置錯誤訊息
5487
			$result["error"][]="not supported format:".$conf["format"];
5488
 
5489
			#回傳結果
5490
			return $result;
5491
 
5492
			}#else end
5493
 
5494
		}#function findSpecifyStr end
5495
 
5496
	/*
218 liveuser 5497
	#尋找連續的多行字串是否依順含有符合格式的內容,且回傳解析好的變數數值.
5498
	#回傳結果:
5499
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5500
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
5501
	#$result["function"],當前執行的函式名稱.
5502
	#$result["argu"],所使用的參數.
5503
	#$result["found"],是否有找到符合格式的連續字串內容,"true"代表有找到,"false"代表沒有找到.
5504
	#$result["content"],陣列,每段符合格式的段落資訊.
5505
	#$result["content"][$i]["lineS"],字串,為第 $i+1 個符合格式的段落起始行數.
5506
	#$result["content"][$i]["ori"],字串,為第 $i+1 個符合格式的段落每行原始內容資訊.
5507
	#$result["content"][$i]["deletedHead"],字串,為第 $i+1 個符合格式的段落每行原始內容被剔除的開頭資訊.
5508
	#$result["content"][$i]["new"],字串,為第 $i+1 個符合格式的段落每行關鍵字內容.
5509
	#$result["content"][$i]["vars"],陣列,為第 $i+1 個符合格式的段落每行變數解析的結果.
5510
	#必填參數:
5511
	#$conf["input"],字串陣列,要檢查的每行字串.
5512
	$conf["input"]=array("");
5513
	#$conf["format"],格式字串陣列,要尋找的每行格式字串集合.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
5514
	$conf["formats"]=array("");
5515
	#可省略參數:
5516
	#無.
5517
	#參考資料:
5518
	#無.
5519
	#備註:
5520
	#回傳結果 $result["content"][$i]["ori"][$j]=array("index"=>$oriLineIndex,"value"=>$oriLineContent) 代表第 $i+1 個符合格式的段落中第 $j+1 個原始內容對應的行數($oriLineIndex+1),其原始內容為 $oriLineContent.
5521
	*/
5522
	public static function findConMatchStrs(&$conf){
5523
 
5524
		#初始化要回傳的結果
5525
		$result=array();
5526
 
5527
		#取得當前執行的函數名稱
5528
		$result["function"]=__FUNCTION__;
5529
 
5530
		#如果沒有參數
5531
		if(func_num_args()==0){
5532
 
5533
			#設置執行失敗
5534
			$result["status"]="false";
5535
 
5536
			#設置執行錯誤訊息
5537
			$result["error"]="函數".$result["function"]."需要參數";
5538
 
5539
			#回傳結果
5540
			return $result;
5541
 
5542
			}#if end
5543
 
5544
		#取得參數
5545
		$result["argu"]=$conf;
5546
 
5547
		#如果 $conf 不為陣列
5548
		if(gettype($conf)!=="array"){
5549
 
5550
			#設置執行失敗
5551
			$result["status"]="false";
5552
 
5553
			#設置執行錯誤訊息
5554
			$result["error"][]="\$conf變數須為陣列形態";
5555
 
5556
			#如果傳入的參數為 null
5557
			if(is_null($conf)){
5558
 
5559
				#設置執行錯誤訊息
5560
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
5561
 
5562
				}#if end
5563
 
5564
			#回傳結果
5565
			return $result;
5566
 
5567
			}#if end
5568
 
5569
		#函式說明:
5570
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
5571
		#回傳結果:
5572
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5573
		#$result["error"],執行不正常結束的錯訊息陣列.
5574
		#$result["simpleError"],簡單表示的錯誤訊息.
5575
		#$result["function"],當前執行的函式名稱.
5576
		#$result["argu"],設置給予的參數.
5577
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
5578
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
5579
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
5580
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
5581
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
5582
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
5583
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
5584
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
5585
		#必填參數:
5586
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
5587
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
5588
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
5589
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
5590
		#可省略參數:
5591
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
5592
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","formats");
5593
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
5594
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
5595
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
5596
		#$conf["canBeEmptyString"]="false";
5597
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
5598
		#$conf["canNotBeEmpty"]=array();
5599
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
5600
		#$conf["canBeEmpty"]=array();
5601
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
5602
		#$conf["skipableVariableCanNotBeEmpty"]=array();
5603
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
5604
		#$conf["skipableVariableName"]=array();
5605
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
5606
		#$conf["skipableVariableType"]=array();
5607
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
5608
		#$conf["skipableVarDefaultValue"]=array("");
5609
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
5610
		#$conf["disallowAllSkipableVarIsEmpty"]="";
5611
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
5612
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
5613
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
5614
		#$conf["disallowAllSkipableVarNotExist"]="";
5615
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
5616
		#$conf["arrayCountEqualCheck"][]=array();
5617
		#參考資料:
5618
		#array_keys=>http://php.net/manual/en/function.array-keys.php
5619
		#備註:
5620
		#無.
5621
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
5622
		unset($conf["variableCheck::checkArguments"]);
5623
 
5624
		#如果執行失敗
5625
		if($checkArguments["status"]==="false"){
5626
 
5627
			#設置錯誤訊息
5628
			$result["error"]=$checkArguments;
5629
 
5630
			#設置執行錯誤
5631
			$result["status"]="false";
5632
 
5633
			#回傳結果
5634
			return $result;
5635
 
5636
			}#if end
5637
 
5638
		#如果檢查不通過
5639
		if($checkArguments["passed"]==="false"){
5640
 
5641
			#設置錯誤訊息
5642
			$result["error"]=$checkArguments;
5643
 
5644
			#設置執行錯誤
5645
			$result["status"]="false";
5646
 
5647
			#回傳結果
5648
			return $result;
5649
 
5650
			}#if end
5651
 
5652
		#關鍵字行搜尋的索引預設數值為0
5653
		$keyWordLineIndex=0;
5654
 
5655
		#針對每行原始內容
5656
		for($oriLineContentIndex=0;$oriLineContentIndex<count($conf["input"]);$oriLineContentIndex++){
5657
 
5658
			#取得原始內容行
5659
			$oriLineContent=$conf["input"][$oriLineContentIndex];
5660
 
5661
			#預設調整後的原始內容跟原本一樣
5662
			$modifiedOriLineContent=$oriLineContent;
5663
 
5664
			#debug
5665
			#var_dump(__LINE__,$modifiedOriLineContent);
5666
 
5667
			#初始化儲存移除的開頭內容
5668
			$deletedOriHead="";
5669
 
5670
			#無窮迴圈
5671
			while(true){
5672
 
5673
				#嘗試移除開頭的 空格 跟 \t
5674
 
5675
				#函式說明:
5676
				#取得符合多個特定字首與字尾的字串
5677
				#回傳結果:
5678
				#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5679
				#$result["function"],當前執行的函數名稱.
5680
				#$result["error"],錯誤訊息陣列.
5681
				#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5682
				#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5683
				#$result["returnString"],爲符合字首字、尾條件的字串內容.
5684
				#$result["meetConditions"],為符合的條件,會是$conf["keyWord"]中的其中一個元素.
5685
				#$result["argu"],使用的參數.
5686
				#必填參數:
5687
				#$conf["checkString"],字串,要檢查的字串.
5688
				$conf["search::getMeetMultiConditionsString"]["checkString"]=$modifiedOriLineContent;
5689
				#$conf["keyWord"],字串陣列,用來檢查字首、字尾應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5690
				$conf["search::getMeetMultiConditionsString"]["keyWord"]=array(array("front"=>" "),array("front"=>"\t"));
5691
				#可省略參數:
5692
				#無.
5693
				#參考資料:
5694
				#無.
5695
				#備註:
5696
				#無.
5697
				$getMeetMultiConditionsString=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5698
				unset($conf["search::getMeetMultiConditionsString"]);
5699
 
5700
				#debug
5701
				#var_dump(__LINE__,$getMeetMultiConditionsString);
5702
 
5703
				#如果執行失敗
5704
				if($getMeetMultiConditionsString["status"]==="false"){
5705
 
5706
					#設置錯誤識別
5707
					$result["status"]="false";
5708
 
5709
					#設置錯誤訊息
5710
					$result["error"]=$getMeetMultiConditionsString;
5711
 
5712
					#回傳結果
5713
					return $result;
5714
 
5715
					}#if end
5716
 
5717
				#如果有關鍵字存在
5718
				if($getMeetMultiConditionsString["founded"]==="true"){
5719
 
5720
					#取得已經移開頭空格跟\t後的內容
5721
					$modifiedOriLineContent=$getMeetMultiConditionsString["content"];
5722
 
5723
					#另存符合且剔除的內容
5724
					$meetConditions=$getMeetMultiConditionsString["meetConditions"]["front"];
5725
 
5726
					#串接開頭剔除的內容
5727
					$deletedOriHead=$deletedOriHead.$meetConditions;
5728
 
5729
					#繼續檢查
5730
					continue;
5731
 
5732
					}#if end
5733
 
5734
				#到這表代表已經移除開頭的 空格 跟 \t
5735
 
5736
				#結束 while
5737
				break;
5738
 
5739
				}#while end
5740
 
5741
			#debug
5742
			#var_dump(__LINE__,$modifiedOriLineContent);
5743
 
5744
			#取得關鍵字行的內容
5745
			$keyWordLine=$conf["formats"][$keyWordLineIndex];
5746
 
5747
			#調整過的關鍵字內容行預設跟原始關鍵行內容一樣
5748
			$modifiedKeyWordLine=$keyWordLine;
5749
 
5750
			#初始化關鍵字前面的內容(可能有為多個空格或tab)
5751
			$keyWordContentOfHead="";
5752
 
5753
			#無窮迴圈
5754
			while(true){
5755
 
5756
				#嘗試剔除開頭的 空格 跟 "\t"
5757
 
5758
				#函式說明:
5759
				#取得符合多個特定字首與字尾的字串
5760
				#回傳結果:
5761
				#$result["status"],若爲"true"則代表執行正常;若爲"false"則代表執行失敗。
5762
				#$result["function"],當前執行的函數名稱.
5763
				#$result["error"],錯誤訊息陣列.
5764
				#$result["founded"],若為"true"則代表有找到符合字首條件的結果;若爲"false"則代表沒有找到。
5765
				#$result["content"],符合條件的字串,去掉字首字尾後的結果.
5766
				#$result["returnString"],爲符合字首字、尾條件的字串內容.
5767
				#$result["meetConditions"],為符合的條件,會是$conf["keyWord"]中的其中一個元素.
5768
				#$result["argu"],使用的參數.
5769
				#必填參數:
5770
				#$conf["checkString"],字串,要檢查的字串.
5771
				$conf["search::getMeetMultiConditionsString"]["checkString"]=$modifiedKeyWordLine;
5772
				#$conf["keyWord"],字串陣列,用來檢查字首、字尾應該要有哪些字串之一,每個元素代表一個可能的條件,key為front者代表開頭的關鍵字,key為tail為代表結尾的官關鍵字.
5773
				$conf["search::getMeetMultiConditionsString"]["keyWord"]=array(array("front"=>" "),array("front"=>"\t"));
5774
				#可省略參數:
5775
				#無.
5776
				#參考資料:
5777
				#無.
5778
				#備註:
5779
				#無.
5780
				$getMeetMultiConditionsString=search::getMeetMultiConditionsString($conf["search::getMeetMultiConditionsString"]);
5781
				unset($conf["search::getMeetMultiConditionsString"]);
5782
 
5783
				#debug
5784
				#var_dump(__LINE__,$getMeetMultiConditionsString);
5785
 
5786
				#如果執行失敗
5787
				if($getMeetMultiConditionsString["status"]==="false"){
5788
 
5789
					#設置錯誤識別
5790
					$result["status"]="false";
5791
 
5792
					#設置錯誤訊息
5793
					$result["error"]=$getMeetMultiConditionsString;
5794
 
5795
					#回傳結果
5796
					return $result;
5797
 
5798
					}#if end
5799
 
5800
				#如果有關鍵字存在
5801
				if($getMeetMultiConditionsString["founded"]==="true"){
5802
 
5803
					#取得移除開頭 空格 跟 \t 後的內容
5804
					$modifiedKeyWordLine=$getMeetMultiConditionsString["content"];
5805
 
5806
					#取得關鍵字前面的內容
5807
					$keyWordContentOfHead=substr($keyWordLine,0,strlen($keyWordLine)-strlen($modifiedKeyWordLine));
5808
 
5809
					#繼續檢查
5810
					continue;
5811
 
5812
					}#if end
5813
 
5814
				#到這表代表已經移除開頭的 空格 跟 \t
5815
 
5816
				#解析關鍵字字串
5817
				#函式說明:
5818
				#尋找字串中是否含有符合格式的內容,且回傳解析好的變數數值.
5819
				#回傳結果:
5820
				#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5821
				#$reuslt["error"],執行不正常結束的錯訊息陣列.
5822
				#$result["function"],當前執行的函式名稱.
5823
				#$result["argu"],所使用的參數.
5824
				#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5825
				#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
5826
				#$result["parsedVar"][varName],陣列,解析好的變數陣列,varName為${}中的內容.
5827
				#必填參數:
5828
				#$conf["input"],字串,要檢查的字串.
5829
				$conf["search::findSpecifyStrFormat"]["input"]=$modifiedOriLineContent;
5830
				#$conf["format"],格式字串,要尋找的格式字串.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
5831
				$conf["search::findSpecifyStrFormat"]["format"]=$modifiedKeyWordLine;
5832
				#可省略參數:
5833
				#$conf["varEqual"],陣列,變數對應的數值,null代表不指定,其他內容代表該變數解析出來必須要為該內容.
5834
				#$conf["varEqual"]=array(null,"found");
5835
				#$conf["varCon"],陣列,每個varEqual為null者,其是否有其他條件,預設為null代表無其他條件,條件的表示是用陣列的key與value來表達,例如:array("no_tail"=>" not"),就代表變數的結尾不能為" not",可以用的key有"head",代表開頭要有什麼;"no_head",代表不能為什麼開頭;"tail",代表要什麼結尾;"no_tail",代表不能什麼結尾.
5836
				#$conf["varCon"]=array("no_tail"=>" not");
5837
				#參考資料:
5838
				#無.
5839
				#備註:
5840
				#無.
5841
				$findSpecifyStrFormat=search::findSpecifyStrFormat($conf["search::findSpecifyStrFormat"]);
5842
				unset($conf["search::findSpecifyStrFormat"]);
5843
 
5844
				#debug
5845
				#var_dump(__LINE__,$findSpecifyStrFormat);
5846
 
5847
				#如果執行異常
5848
				if($findSpecifyStrFormat["status"]==="false"){
5849
 
5850
					#設置錯誤識別
5851
					$result["status"]="false";
5852
 
5853
					#設置錯誤訊息
5854
					$result["error"]=$findSpecifyStrFormat;
5855
 
5856
					#回傳結果
5857
					return $result;
5858
 
5859
					}#if end
5860
 
5861
				#如果沒有找到符合的格式
5862
				if($findSpecifyStrFormat["found"]==="false"){
5863
 
5864
					#重新尋找第一個關鍵字串
5865
					$keyWordLineIndex=0;
5866
 
5867
					}#if end
5868
 
5869
				#反之有找到符合的格式
5870
				else if($findSpecifyStrFormat["found"]==="true"){
5871
 
5872
					#$result["content"][$i]["lineS"],字串,為第 $i+1 個符合格式的段落起始行數.
5873
					#$result["content"][$i]["ori"],陣列,為第 $i+1 個符合格式的段落每行原始內容資訊.
5874
					#$result["content"][$i]["ori"][$j]=array("index"=>$oriLineIndex,"value"=>$oriLineContent),代表第 $i+1 個符合格式的段落中第 $j+1 個原始內容對應的行數($oriLineIndex+1),其原始內容為 $oriLineContent.
5875
					#$result["content"][$i]["new"],陣列,為第 $i+1 個符合格式的段落每行關鍵字內容.
5876
					#$result["content"][$i]["vars"],陣列,為第 $i+1 個符合格式的段落每行變數解析的結果.
5877
 
5878
					#如果第一個關鍵字串有符合
5879
					if($keyWordLineIndex===0){
5880
 
5881
						#初始化暫存符合的行數資訊
5882
						$matchInfo=array();
5883
 
5884
						#記錄符合的行數
5885
						$matchInfo["lineS"]=$oriLineContentIndex;
5886
 
5887
						}#if end
5888
 
5889
					#記錄符合的原始字串行
5890
					$matchInfo["ori"][]=array("index"=>$oriLineContentIndex,"value"=>$modifiedOriLineContent,"deletedHead"=>$deletedOriHead);
5891
 
5892
					#記錄符合的關鍵字字串行
5893
					$matchInfo["new"][]=$modifiedKeyWordLine;
5894
 
5895
					#記錄解析出來的變數結果
5896
					$matchInfo["vars"][]=$findSpecifyStrFormat["parsedVar"];
5897
 
5898
					#如果後面還有關鍵字串
5899
					if(isset($conf["formats"][$keyWordLineIndex+1])){
5900
 
5901
						#看下一個要判斷的關鍵字串
5902
						$keyWordLineIndex++;
5903
 
5904
						}#if end
5905
 
5906
					#反之
5907
					else{
5908
 
5909
						#記錄符合的結果資訊
5910
						$result["content"][]=$matchInfo;
5911
 
5912
						#下次要再從第一個關鍵字字串看起
5913
						$keyWordLineIndex=0;
5914
 
5915
						}#else end
5916
 
5917
					}#else end
5918
 
5919
				#不應該執行到這邊
5920
				else{
5921
 
5922
					#設置錯誤識別
5923
					$result["status"]="false";
5924
 
5925
					#設置錯誤訊息
5926
					$result["error"][]="unexpected error";
5927
 
5928
					#設置錯誤訊息
5929
					$result["error"][]=$findSpecifyStrFormat;
5930
 
5931
					#回傳結果
5932
					return $result;
5933
 
5934
					}#else end
5935
 
5936
				#結束 while
5937
				break;
5938
 
5939
				}#while end
5940
 
5941
			}#for end
5942
 
5943
		#預設沒有找到符合的字串區段
5944
		$result["found"]="false";
5945
 
5946
		#如果有比對到的結果
5947
		if(!empty($result["content"])){
5948
 
5949
			#設置有找到符合的字串區段
5950
			$result["found"]="true";
5951
 
5952
			}#if end
5953
 
5954
		#設置執行正常
5955
		$result["status"]="true";
5956
 
5957
		#回傳結果
5958
		return $result;
5959
 
5960
		}#function findConMatchStrs end
5961
 
5962
	/*
3 liveuser 5963
	#函式說明:
5964
	#尋找字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
5965
	#回傳結果:
5966
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
5967
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
5968
	#$result["function"],當前執行的函式名稱.
5969
	#$result["argu"],所使用的參數.
5970
	#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
5971
	#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
5972
	#必填參數:
5973
	#$conf["input"],字串,要檢查的字串.
5974
	$conf["input"]="";
66 liveuser 5975
	#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
3 liveuser 5976
	$conf["formats"]=array("");
5977
	#可省略參數:
5978
	#無.
5979
	#參考資料:
5980
	#無.
5981
	#備註:
5982
	#無.
5983
	*/
5984
	public static function findSpecifyStrFormats(&$conf){
5985
 
5986
		#初始化要回傳的結果
5987
		$result=array();
5988
 
5989
		#取得當前執行的函數名稱
5990
		$result["function"]=__FUNCTION__;
5991
 
5992
		#如果沒有參數
5993
		if(func_num_args()==0){
5994
 
5995
			#設置執行失敗
5996
			$result["status"]="false";
5997
 
5998
			#設置執行錯誤訊息
5999
			$result["error"]="函數".$result["function"]."需要參數";
6000
 
6001
			#回傳結果
6002
			return $result;
6003
 
6004
			}#if end
6005
 
6006
		#取得參數
6007
		$result["argu"]=$conf;
6008
 
6009
		#如果 $conf 不為陣列
6010
		if(gettype($conf)!=="array"){
6011
 
6012
			#設置執行失敗
6013
			$result["status"]="false";
6014
 
6015
			#設置執行錯誤訊息
6016
			$result["error"][]="\$conf變數須為陣列形態";
6017
 
6018
			#如果傳入的參數為 null
6019
			if(is_null($conf)){
6020
 
6021
				#設置執行錯誤訊息
6022
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6023
 
6024
				}#if end
6025
 
6026
			#回傳結果
6027
			return $result;
6028
 
6029
			}#if end
6030
 
6031
		#函式說明:
6032
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
6033
		#回傳結果:
6034
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6035
		#$result["error"],執行不正常結束的錯訊息陣列.
6036
		#$result["simpleError"],簡單表示的錯誤訊息.
6037
		#$result["function"],當前執行的函式名稱.
6038
		#$result["argu"],設置給予的參數.
6039
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6040
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6041
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6042
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
6043
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
6044
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
6045
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
6046
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
6047
		#必填參數:
6048
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6049
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
6050
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6051
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
6052
		#可省略參數:
6053
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6054
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input","formats");
6055
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
6056
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string","array");
6057
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6058
		#$conf["canBeEmptyString"]="false";
6059
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
6060
		#$conf["canNotBeEmpty"]=array();
6061
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
6062
		#$conf["canBeEmpty"]=array();
6063
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
6064
		#$conf["skipableVariableCanNotBeEmpty"]=array();
6065
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6066
		#$conf["skipableVariableName"]=array();
6067
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6068
		#$conf["skipableVariableType"]=array();
6069
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6070
		#$conf["skipableVarDefaultValue"]=array("");
6071
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
6072
		#$conf["disallowAllSkipableVarIsEmpty"]="";
6073
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
6074
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
6075
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
6076
		#$conf["disallowAllSkipableVarNotExist"]="";
6077
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
6078
		#$conf["arrayCountEqualCheck"][]=array();
6079
		#參考資料:
6080
		#array_keys=>http://php.net/manual/en/function.array-keys.php
6081
		#備註:
6082
		#無.
6083
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
6084
		unset($conf["variableCheck::checkArguments"]);
6085
 
6086
		#如果執行失敗
6087
		if($checkArguments["status"]==="false"){
6088
 
6089
			#設置錯誤訊息
6090
			$result["error"]=$checkArguments;
6091
 
6092
			#設置執行錯誤
6093
			$result["status"]="false";
6094
 
6095
			#回傳結果
6096
			return $result;
6097
 
6098
			}#if end
6099
 
6100
		#如果檢查不通過
6101
		if($checkArguments["passed"]==="false"){
6102
 
6103
			#設置錯誤訊息
6104
			$result["error"]=$checkArguments;
6105
 
6106
			#設置執行錯誤
6107
			$result["status"]="false";
6108
 
6109
			#回傳結果
6110
			return $result;
6111
 
6112
			}#if end
6113
 
6114
		#初始化符合的格式
6115
		$result["content"]=array();
6116
 
6117
		#預設沒有符合的格式
6118
		$result["found"]="false";
6119
 
6120
		#針對每個格式
6121
		foreach($conf["formats"] as $format){
6122
 
6123
			#函式說明:
6124
			#尋找字串中是否含有符合格式的內容,且回傳解析好的變數數值.
6125
			#回傳結果:
6126
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6127
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
6128
			#$result["function"],當前執行的函式名稱.
6129
			#$result["argu"],所使用的參數.
6130
			#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
6131
			#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
6132
			#必填參數:
6133
			#$conf["input"],字串,要檢查的字串.
6134
			$conf["search::findSpecifyStrFormat"]["input"]=$conf["input"];
6135
			#$conf["format"],格式字串,要尋找的格式字串.格式為固定的字串("fixedStr format")與變數(${keyWordVarName})組成.
6136
			$conf["search::findSpecifyStrFormat"]["format"]=$format;
6137
			#可省略參數:
6138
			#無.
6139
			#參考資料:
6140
			#無.
6141
			#備註:
6142
			#無.
6143
			$findSpecifyStrFormat=search::findSpecifyStrFormat($conf["search::findSpecifyStrFormat"]);
6144
			unset($conf["search::findSpecifyStrFormat"]);
6145
 
6146
			#如果執行失敗
6147
			if($findSpecifyStrFormat["status"]==="false"){
6148
 
6149
				#設置錯誤訊息
6150
				$result["error"]=$findSpecifyStrFormat;
6151
 
6152
				#設置執行錯誤
6153
				$result["status"]="false";
6154
 
6155
				#回傳結果
6156
				return $result;
6157
 
6158
				}#if end
6159
 
6160
			#如果有找到符合的格式
6161
			if($findSpecifyStrFormat["found"]==="true"){
6162
 
6163
				#var_dump(__LINE__,$findSpecifyStrFormat);
6164
 
6165
				#設置符合的格式資訊
6166
				$result["content"][]=$findSpecifyStrFormat["content"];
6167
 
6168
				#設置有符合的格式
6169
				$result["found"]="true";
6170
 
6171
				}#if end
6172
 
6173
			}#foreach end
6174
 
6175
		#設置執行正常
6176
		$result["status"]="true";
6177
 
6178
		#回傳結果
6179
		return $result;
6180
 
6181
		}#function findSpecifyStrFormats end
6182
 
6183
	/*
6184
	#函式說明:
6185
	#尋找多個字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
6186
	#回傳結果:
6187
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6188
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
6189
	#$result["function"],當前執行的函式名稱.
6190
	#$result["argu"],所使用的參數.
6191
	#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
6192
	#$result["content"],陣列,key為lineNo者為inputs參數的索引;key為content者為符合的資訊,若為n個${*},則當found為"true"時,就會回傳n個元素.
6193
	#必填參數:
6194
	#$conf["inputs"],字串陣列,要檢查的字串集合.
6195
	$conf["inputs"]=array("");
66 liveuser 6196
	#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數("${keyWordVarName}")組成.
3 liveuser 6197
	$conf["formats"]=array("");
6198
	#可省略參數:
6199
	#無.
6200
	#參考資料:
6201
	#無.
6202
	#備註:
6203
	#無.
6204
	*/
6205
	public static function getMatchFormatsStrings(&$conf){
6206
 
6207
		#初始化要回傳的結果
6208
		$result=array();
6209
 
6210
		#取得當前執行的函數名稱
6211
		$result["function"]=__FUNCTION__;
6212
 
6213
		#如果沒有參數
6214
		if(func_num_args()==0){
6215
 
6216
			#設置執行失敗
6217
			$result["status"]="false";
6218
 
6219
			#設置執行錯誤訊息
6220
			$result["error"]="函數".$result["function"]."需要參數";
6221
 
6222
			#回傳結果
6223
			return $result;
6224
 
6225
			}#if end
6226
 
6227
		#取得參數
6228
		$result["argu"]=$conf;
6229
 
6230
		#如果 $conf 不為陣列
6231
		if(gettype($conf)!=="array"){
6232
 
6233
			#設置執行失敗
6234
			$result["status"]="false";
6235
 
6236
			#設置執行錯誤訊息
6237
			$result["error"][]="\$conf變數須為陣列形態";
6238
 
6239
			#如果傳入的參數為 null
6240
			if(is_null($conf)){
6241
 
6242
				#設置執行錯誤訊息
6243
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6244
 
6245
				}#if end
6246
 
6247
			#回傳結果
6248
			return $result;
6249
 
6250
			}#if end
6251
 
6252
		#函式說明:
6253
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
6254
		#回傳結果:
6255
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6256
		#$result["error"],執行不正常結束的錯訊息陣列.
6257
		#$result["simpleError"],簡單表示的錯誤訊息.
6258
		#$result["function"],當前執行的函式名稱.
6259
		#$result["argu"],設置給予的參數.
6260
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6261
		#$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6262
		#$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6263
		#$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
6264
		#$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
6265
		#$result["argu"],字串陣列,目前輸入的參數名稱陣列.
6266
		#$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
6267
		#$result["notNeedVar"],字串陣列,多餘的參數名稱.
6268
		#必填參數:
6269
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6270
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
6271
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6272
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
6273
		#可省略參數:
6274
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6275
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputs","formats");
6276
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
6277
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
6278
		#$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
6279
		#$conf["canBeEmptyString"]="false";
6280
		#$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
6281
		#$conf["canNotBeEmpty"]=array();
6282
		#$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
6283
		#$conf["canBeEmpty"]=array();
6284
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
6285
		#$conf["skipableVariableCanNotBeEmpty"]=array();
6286
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6287
		#$conf["skipableVariableName"]=array();
6288
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
6289
		#$conf["skipableVariableType"]=array();
6290
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6291
		#$conf["skipableVarDefaultValue"]=array("");
6292
		#$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
6293
		#$conf["disallowAllSkipableVarIsEmpty"]="";
6294
		#$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
6295
		#$conf["disallowAllSkipableVarIsEmptyArray"]="";
6296
		#$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
6297
		#$conf["disallowAllSkipableVarNotExist"]="";
6298
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
6299
		#$conf["arrayCountEqualCheck"][]=array();
6300
		#參考資料:
6301
		#array_keys=>http://php.net/manual/en/function.array-keys.php
6302
		#備註:
6303
		#無.
6304
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
6305
		unset($conf["variableCheck::checkArguments"]);
6306
 
6307
		#如果執行失敗
6308
		if($checkArguments["status"]==="false"){
6309
 
6310
			#設置錯誤訊息
6311
			$result["error"]=$checkArguments;
6312
 
6313
			#設置執行錯誤
6314
			$result["status"]="false";
6315
 
6316
			#回傳結果
6317
			return $result;
6318
 
6319
			}#if end
6320
 
6321
		#如果檢查不通過
6322
		if($checkArguments["passed"]==="false"){
6323
 
6324
			#設置錯誤訊息
6325
			$result["error"]=$checkArguments;
6326
 
6327
			#設置執行錯誤
6328
			$result["status"]="false";
6329
 
6330
			#回傳結果
6331
			return $result;
6332
 
6333
			}#if end
6334
 
6335
		#初始化符合的格式
6336
		$result["content"]=array();
6337
 
6338
		#預設沒有符合的格式
6339
		$result["found"]="false";
6340
 
6341
		#針對每個要檢查的字串
6342
		foreach($conf["inputs"] as $lineNo => $str){
6343
 
6344
			#函式說明:
6345
			#尋找字串中是否含有符合多個格式之一的內容,且回傳解析好的變數數值.
6346
			#回傳結果:
6347
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6348
			#$reuslt["error"],執行不正常結束的錯訊息陣列.
6349
			#$result["function"],當前執行的函式名稱.
6350
			#$result["argu"],所使用的參數.
6351
			#$result["found"],是否有找到符合格式的字串內容,"true"代表有找到,"false"代表沒有找到.
6352
			#$result["content"],陣列,若為n個${*},則當found為"true"時,就會回傳n個元素.
6353
			#必填參數:
6354
			#$conf["input"],字串,要檢查的字串.
6355
			$conf["search::findSpecifyStrFormats"]["input"]=$str;
6356
			#$conf["format"],格式字串陣列,要尋找的可能格式字串集合.格式為固定的字串("fixedStr format")與變數(${keyWordVarName})組成.
6357
			$conf["search::findSpecifyStrFormats"]["formats"]=$conf["formats"];
6358
			#可省略參數:
6359
			#無.
6360
			#參考資料:
6361
			#無.
6362
			#備註:
6363
			#無.
6364
			$findSpecifyStrFormats=search::findSpecifyStrFormats($conf["search::findSpecifyStrFormats"]);
6365
			unset($conf["search::findSpecifyStrFormats"]);
6366
 
6367
			#如果執行失敗
6368
			if($findSpecifyStrFormats["status"]==="false"){
6369
 
6370
				#設置錯誤訊息
6371
				$result["error"]=$findSpecifyStrFormats;
6372
 
6373
				#設置執行錯誤
6374
				$result["status"]="false";
6375
 
6376
				#回傳結果
6377
				return $findSpecifyStrFormats;
6378
 
6379
				}#if end
6380
 
6381
			#如果有符合的格式
6382
			if($findSpecifyStrFormats["found"]==="true"){
6383
 
6384
				#暫存的陣列
6385
				$tmp=array();
6386
 
6387
				#設置行號
6388
				$tmp["lineNo"]=$lineNo;
6389
 
6390
				#設置找到的結果
6391
				$tmp["content"]=$findSpecifyStrFormats["content"];
6392
 
6393
				#儲存找到的結果
6394
				$result["content"][]=$tmp;
6395
 
6396
				#設置有找到
6397
				$result["found"]="true";
6398
 
6399
				}#if end
6400
 
6401
			}#foreach end
6402
 
6403
		#設置執行正常
6404
		$result["status"]="true";
6405
 
6406
		#回傳結果
6407
		return $result;
6408
 
6409
		}#function getMatchFormatsStrings end
6410
 
6411
	/*
6412
	#函式說明:
6413
	#尋找字串中是否含有 shell 變數.
6414
	#回傳結果:
6415
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6416
	#$reuslt["error"],執行不正常結束的錯訊息陣列.
6417
	#$result["function"],當前執行的函式名稱.
6418
	#$result["argu"],所使用的參數.
6419
	#$result["founded"],是否有找到shell變數,"true"代表有找到,"false"代表沒有找到..
6420
	#必填參數:
6421
	#$conf["input"],字串,要檢查的字串..
6422
	$conf["input"]="";
6423
	#可省略參數:
6424
	#無.
6425
	#參考資料:
6426
	#無.
6427
	#備註:
6428
	#無.
6429
	*/
6430
	public static function findShellVar(&$conf){
6431
 
6432
		#初始化要回傳的結果
6433
		$result=array();
6434
 
6435
		#取得當前執行的函數名稱
6436
		$result["function"]=__FUNCTION__;
6437
 
6438
		#如果沒有參數
6439
		if(func_num_args()==0){
6440
 
6441
			#設置執行失敗
6442
			$result["status"]="false";
6443
 
6444
			#設置執行錯誤訊息
6445
			$result["error"]="函數".$result["function"]."需要參數";
6446
 
6447
			#回傳結果
6448
			return $result;
6449
 
66 liveuser 6450
			}#if end
3 liveuser 6451
 
6452
		#取得參數
6453
		$result["argu"]=$conf;
6454
 
6455
		#如果 $conf 不為陣列
6456
		if(gettype($conf)!=="array"){
6457
 
6458
			#設置執行失敗
6459
			$result["status"]="false";
6460
 
6461
			#設置執行錯誤訊息
6462
			$result["error"][]="\$conf變數須為陣列形態";
6463
 
6464
			#如果傳入的參數為 null
6465
			if($conf===null){
6466
 
6467
				#設置執行錯誤訊息
6468
				$result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";
6469
 
6470
				}#if end
6471
 
6472
			#回傳結果
6473
			return $result;
6474
 
6475
			}#if end
6476
 
6477
		#檢查參數
6478
		#函式說明:
6479
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
6480
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
6481
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
6482
		#$result["function"],當前執行的函式名稱.
6483
		#$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
6484
		#$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
6485
		#$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
6486
		#$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
6487
		#必填寫的參數:
6488
		#$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
6489
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
6490
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
6491
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("input");
6492
		#$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列 例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double"); 
6493
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
6494
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
6495
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
6496
		#可以省略的參數:
6497
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
6498
		#$conf["variableCheck::checkArguments"]["canBeEmptyString"]="true";
6499
		#$conf["variableCheck::checkArguments"]["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
6500
		#$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("username","password","port","title","fullScreen","spicePassword");
6501
		#$conf["variableCheck::checkArguments"]["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
6502
		#$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string","string","string","string","string","string");
6503
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,"null"代表不指定,若預設值是必填參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
6504
		#$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null,null,null,null,"false",null);
6505
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
6506
		#$conf["variableCheck::checkArguments"]["arrayCountEqualCheck"][]=array();
6507
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
6508
		unset($conf["variableCheck::checkArguments"]);
6509
 
6510
		#如果檢查參數失敗
6511
		if($checkResult["status"]=="false"){
6512
 
6513
			#設置執行失敗
6514
			$result["status"]="false";
6515
 
6516
			#設置執行錯誤
6517
			$result["error"]=$checkResult;
6518
 
6519
			#回傳結果
6520
			return $result;
6521
 
6522
			}#if end
6523
 
6524
		#如果檢查參數不通過
6525
		if($checkResult["passed"]=="false"){
6526
 
6527
			#設置執行失敗
6528
			$result["status"]="false";
6529
 
6530
			#設置執行錯誤
6531
			$result["error"]=$checkResult;
6532
 
6533
			#回傳結果
6534
			return $result;
6535
 
6536
			}#if end
6537
 
6538
		#函式說明:
6539
		#將字串進行解析,取得兩個關鍵字中間的內容.
6540
		#回傳結果:
6541
		#$result["status"],執行正常與否,"false"代表不正常,"true"代表正常.
6542
		#$result["function"],當前執行的函式內容.
6543
		#$result["error"],錯誤訊息陣列.
6544
		#$result["content"],取得的內容.
6545
		#$result["oriStr"],原始的內容.
6546
		#$result["found"],是否有找到符合條件的內容.
6547
		#必填參數:
6548
		#$conf["input"],字串,要處理的字串.
6549
		$conf["stringProcess::getContentBetweenKeyWord"]["input"]=$conf["input"];
6550
		#$conf["startKeyWord"],字串,開頭的關鍵字.
6551
		$conf["stringProcess::getContentBetweenKeyWord"]["startKeyWord"]="\${";
6552
		#$conf["endKeyWord"],字串,結束的關鍵字.
6553
		$conf["stringProcess::getContentBetweenKeyWord"]["endKeyWord"]="}";
6554
		#可省略參數:
6555
		#無.
6556
		#參考資料:
6557
		#無.
6558
		#備註:
6559
		#無.
6560
		$getContentBetweenKeyWord=stringProcess::getContentBetweenKeyWord($conf["stringProcess::getContentBetweenKeyWord"]);
6561
		unset($conf["stringProcess::getContentBetweenKeyWord"]);
6562
 
6563
		#如果執行失敗
6564
		if($getContentBetweenKeyWord["status"]==="false"){
6565
 
6566
			#設置執行失敗
6567
			$result["status"]="false";
6568
 
6569
			#設置執行錯誤
6570
			$result["error"]=$getContentBetweenKeyWord;
6571
 
6572
			#回傳結果
6573
			return $result;
6574
 
6575
			}#if end
6576
 
6577
		#如果沒有符合條件的內容
6578
		if($getContentBetweenKeyWord["found"]==="false"){
6579
 
6580
			#設置執行正常
6581
			$result["status"]="true";
6582
 
6583
			#設置沒有找到 shell 變數
6584
			$result["founded"]="false";
6585
 
6586
			#回傳結果
6587
			return $result;
6588
 
6589
			}#if end
6590
 
6591
		#函式說明:
6592
		#檢查字串裡面有無指定的關鍵字
6593
		#回傳結果:
6594
		#$result["status"],"true"代表執行成功,"false"代表執行失敗。
6595
		#$result["error"],錯誤訊息
6596
		#$result["function"],當前執行的函數名稱.
6597
		#$result["argu"],使用的參數.
6598
		#$result["founded"],是否找到關鍵字,"true"代表有找到關鍵字;"false"代表沒有找到關鍵字。
6599
		#$result["keyWordCount"],找到的關鍵字數量.
6600
		#必填參數:
6601
		#$conf["keyWord"],字串,想要搜尋的關鍵字.
6602
		$conf["search::findKeyWord"]["keyWord"]=" ";
6603
		#$conf["string"],字串,要被搜尋的字串內容
6604
		$conf["search::findKeyWord"]["string"]=$getContentBetweenKeyWord["content"];
6605
		#可省略參數:
6606
		#$conf["completeEqual"],字串,是否內容要完全符合,不能多出任何不符合的內容,預設為不需要完全符合。
6607
		#$conf["completeEqual"]="true";
6608
		#參考資料:
6609
		#無.
6610
		#備註:
6611
		#無.
6612
		$findKeyWord=search::findKeyWord($conf["search::findKeyWord"]);
6613
		unset($conf["search::findKeyWord"]);
6614
 
6615
		#如果執行失敗
6616
		if($findKeyWord["status"]==="false"){
6617
 
6618
			#設置執行失敗
6619
			$result["status"]="false";
6620
 
6621
			#設置執行錯誤
6622
			$result["error"]=$findKeyWord;
6623
 
6624
			#回傳結果
6625
			return $result;
6626
 
6627
			}#if end
6628
 
6629
		#如果有符合條件的內容
6630
		if($findKeyWord["founded"]==="true"){
6631
 
6632
			#設置執行正常
6633
			$result["status"]="true";
6634
 
6635
			#設置沒有找到 shell 變數
6636
			$result["founded"]="false";
6637
 
6638
			#回傳結果
6639
			return $result;
6640
 
6641
			}#if end
6642
 
6643
		#執行到這邊代表真的有 shell 變數存在
6644
 
6645
		#設置執行正常
6646
		$result["status"]="true";
6647
 
6648
		#設置沒有找到 shell 變數
6649
		$result["founded"]="true";
6650
 
6651
		#回傳結果
6652
		return $result;
6653
 
6654
		}#function findShellVar end
6655
 
6656
	}#class search end
6657
 
6658
?>