2013-02-11 22 views
0

我有一個網站,我需要用正則表達式替換(離開中間文本)

$_POST['some_text_here'] 

與此

mysql_real_escape_string($_POST['some_text_here']) 
幾乎400這幾樣串的替代(在幾十個或幾百個文件)

這裏的關鍵是我想添加結束括號,否則這將是一個簡單的搜索和替換。

我是新來的正則表達式,所以我甚至不知道如果搜索和替換是可能的,而留下文本(特別是'some_text_here')在替換的中間。

我爲此使用PHPStorm,如果這有所作爲。

+0

我還沒有嘗試過任何東西:

(\$_POST\['[^']*'\]) 

然後像這樣的東西

mysql_real_escape_string($1) 

代碼替換還是如此我不確定這是否甚至可以用正則表達式搜索和替換。 – SpecialK 2013-02-11 21:33:05

+2

然後先試一下。當然這是可能的。但是你需要先嚐試一下才能找到解決方案。 – 2013-02-11 21:34:14

回答

1

像這樣的東西應該工作:

preg_replace ('($_POST\\[\'[^\']\'\\])', 'mysql_real_escape_string($1)', 'file contents go here') 

未測試

+0

非常感謝。我實際上稍微修改了它。我添加了我在 – SpecialK 2013-02-11 21:55:11

+0

(\ $ _POST \ [。* \])下面使用的內容//我在開頭添加了一個斜槓,並在POST文本內部改爲通配符。 – SpecialK 2013-02-11 22:02:35

+0

啊...是的。我忘了星星。我將編輯原始答案。也忘了逃避'$'。只要認識到'。*'在同一行上有多個'$ _POST []'語句可能會有危險。 – JDB 2013-02-12 13:42:15

0

我認爲,正則表達式是不是你想要的..你而想是這樣的:

foreach ($_POST as $key => $value) { 
    $_POST[$key] = mysql_real_escape_string($value); 
} 

正則表達式..

\$_POST\['([a-zA-Z0-9_-]+)'\] 

替換 - 是這樣的:

mysql_real_escape_string\(\$_POST\['$1'\]\) 

Btw:mysql_ *已棄用,不應再使用 - 使用mysqli_或PDO代替

+0

我正在尋找做幾十到幾百個*文件*的搜索和替換,而不是一組POST數據變量,否則這是循環遍歷所有這些變量的好方法。 – SpecialK 2013-02-11 21:37:56

+0

你從來沒有提到過一些文件..我們沒有水晶球 – Philipp 2013-02-11 21:39:10

+0

Doh,你是對的,我已經更新了原文。 – SpecialK 2013-02-11 21:40:42