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