天天看點

關于preg_replace函數的問題講解

<a href="http://www.jb51.net/article/8676.htm">http://www.jb51.net/article/8676.htm</a>

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

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

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

修飾符:

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");

?&gt;

執行個體如:phpbb的viewtopic.php變量$highliht_match送出php代碼執行漏洞

參考:

<a href="http://superhei.blogbus.com/logs/2398452.html">http://superhei.blogbus.com/logs/2398452.html</a>

上一篇: jdk6