在采集的使用中我們?yōu)椴杉?xiàng),設(shè)置了過濾項(xiàng)后,有的時(shí)候會(huì)出現(xiàn)無效的情況。也就是采集出來的結(jié)果并沒有按我們的想像的把過濾項(xiàng)給刪除了。這是為什么呢?
如下面的一個(gè)例子,我們?cè)谶^濾項(xiàng)中進(jìn)行如下的設(shè)置:
../down.php?uri=[|]
他的意思是要把“../down.php?uri=”給過濾掉。可采集出來的結(jié)果很不近人意。并沒有把這個(gè)字符串給過濾掉。這是為什么呢?
PHPCMS V9的采集過濾項(xiàng),使用的是正則表達(dá)式匹配過濾。在我們的上面所設(shè)置的過濾項(xiàng)中出現(xiàn)了一些正則表達(dá)式的特殊符號(hào)。當(dāng)我把過濾規(guī)則修改為:
../down.php?uri=[|]
過濾項(xiàng)生效了。這里要給大家說明的一個(gè)問題就是,正則表達(dá)式中的特殊字符只要在它的前面加一個(gè)反斜線(),他的意思就是表示為符號(hào)本身了,不再是正則表達(dá)式中的有特殊意義的字符了。
那么正則表達(dá)式里面又有哪些需要注意的特殊符號(hào)呢?如下表所示,這些符號(hào)如果我們要匹配他們的時(shí)候都需要在他們的前面添加反斜線。
字符 |
說明 |
---|---|
^ |
匹配輸入字符串的開始位置。要匹配 "^" 字符本身,請(qǐng)使用 "^" |
$ |
匹配輸入字符串的結(jié)尾位置。要匹配 "$" 字符本身,請(qǐng)使用 "$" |
( ) |
標(biāo)記一個(gè)子表達(dá)式的開始和結(jié)束位置。要匹配小括號(hào),請(qǐng)使用 "(" 和 ")" |
[ ] |
用來自定義能夠匹配 '多種字符' 的表達(dá)式。要匹配中括號(hào),請(qǐng)使用 "[" 和 "]" |
{ } |
修飾匹配次數(shù)的符號(hào)。要匹配大括號(hào),請(qǐng)使用 "{" 和 "}" |
. |
匹配除了換行符( )以外的任意一個(gè)字符。要匹配小數(shù)點(diǎn)本身,請(qǐng)使用 "." |
? |
修飾匹配次數(shù)為 0 次或 1 次。要匹配 "?" 字符本身,請(qǐng)使用 "?" |
+ |
修飾匹配次數(shù)為至少 1 次。要匹配 "+" 字符本身,請(qǐng)使用 "+" |
* |
修飾匹配次數(shù)為 0 次或任意次。要匹配 "*" 字符本身,請(qǐng)使用 "*" |
| |
左右兩邊表達(dá)式之間 "或" 關(guān)系。匹配 "|" 本身,請(qǐng)使用 "|" |