Subversion Repositories php-qbpwcf

Rev

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