2011-07-12 38 views
0

我與發現如何加強與preg_match/replace regex一起使用的輸入?

var $_plgCode  = "#{comment(.*?) contentid=(.*?) option=(.*?) contenttitle=(.*?)}#i"; 

再後來PHP腳本工作使用此參數:

preg_match_all($this->_plgCode, $_body, $matches); 

$_body = preg_replace($this->_plgCode, $output, $_body); 

的問題是,contenttitle可以包含用戶輸入和並沒有被強化 - 例如,很多事情都會打破它,就像用戶輸入}一樣。

什麼樣的用戶輸入轉義需要在contenttitle上完成以確保它不會破壞REGEX?

+0

如果'}'性格是不是在正則表達式,但在更換琴絃,怎麼可能不會打破你的正則表達式?它可能會中斷HTML,當然,正則表達式本身?不。或者你正在創建_another_正則表達式嗎? – Wrikken

+0

如果用戶寫,爲exampe,「這是}標題」,那麼字符串變爲: {評論內容識別= 100選項= OPTION_NAME contenttitle =這是}標題} – key2starz

+0

你指的是用戶在進入$ _body字符串? – Wrikken

回答

0

使用preg_quote

+1

嗯。不是。這個問題不是將文本插入到正則表達式中。 – Tomalak

相關問題