2010-11-13 67 views
1

我在反sql注入例程中看到了這一行,那麼它的含義是什麼?以下ereg_replace的含義是什麼?

ereg_replace('(%)', '\\\1', $str); 
+0

一旦你對'ereg_replace'有了很好的理解,你應該立即轉向'preg_replace'。 'ereg'函數現在已經過時。 – stillstanding 2010-11-13 05:15:09

回答

3

它用\%更換%逃逸百分比符號。 PHP有逃脫字符的更好的方法,即addcslashes

addcslashes($str, '%');` 

還要注意的是功能的額日格一族的青睞其預浸當量已被棄用。

+0

爲什麼我們用%替換%?該例程已經調用了real_escape_string,實際上它添加了這行代碼,然後自己調用super_escape_string。 – Jichao 2010-11-13 05:08:51

+0

@Jichao因爲'%'在SQL查詢中有特殊的含義(它就像是模式匹配的通配符),而'\%'總是一個字面百分號。 – meagar 2010-11-13 05:10:00

+0

我同意參數化語句的建議。但是,['mysql_real_escape_string'](http://php.net/manual/en/function.mysql-real-escape-string.php)不處理'%'(請參見上一個註釋)。對於準備好的陳述,它可能取決於圖書館。我並不是說這個正則表達式是正確的,儘管(它絕對是非常詳細的)。 – 2010-11-13 05:11:15

相關問題