Регулярное выражение Notepad++ находит и заменяет $_REQUEST на $_GET, но более безопасным

Что я делаю, так это заменяю в большой программе все $_REQUEST['var'] и mysql_escape_string($_REQUEST['var']) либо 1-й, либо 2-й строкой под пунктирной линией.

Теперь я понял большую часть регулярного выражения, но я хотел бы сделать его проще. Вместо того, чтобы сначала запускать верхний, а затем второй, я хотел бы просто запустить все вместе. Я пробовал это, но это не сработало.

(mysql_escape_string\()*$_REQUEST\[\'([^']*)\'\]\)(\)*)

Итак, ниже показано, что работает, но снова нужно сделать это дважды.

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

mysql_escape_string\($_REQUEST\[\'([^']*)\'\]\)

(isset($_GET['\1'])?mysql_real_escape_string($_GET['\1']):false)

(isset($_POST['\1'])?mysql_real_escape_string($_POST['\1']):false)

============================ Обновление: Да, после некоторых исследований я понял, что Notepad++ не поддерживает большинство регулярных выражений. Думаю, один лишний шаг не может навредить человеку. Это просто лень.

* ПРИМЕЧАНИЕ: НО, если кто-то хочет попробовать, не стесняйтесь комментировать. По крайней мере, это всего 2 шага, а не 20.


person David    schedule 10.09.2009    source источник
comment
Можете ли вы показать пример вашего исходного текста, а затем пример вашего целевого текста?   -  person akf    schedule 11.09.2009


Ответы (2)


Я должен использовать это регулярное выражение:

mysql_escape_string\(\$_REQUEST\['[^']*'\]\)|\$_REQUEST\['[^']*'\]

... но, похоже, Notepad ++ не поддерживает чередование (это канал: '|') при поиске регулярных выражений. На самом деле, кажется, что есть много основных функций регулярных выражений, которые не поддерживаются. Это должна быть простая задача, но я не могу заставить ее работать на АЭС. Я не понимаю, как этот редактор вообще может утверждать, что поддерживает поиск регулярных выражений. (И да, я знаю, что он унаследовал эту функцию от SciTE — я тоже разочарован в них.)

Если вам нужен настоящий поиск и замена регулярных выражений в вашем редакторе, я предлагаю вам раскошелиться на EditPad Pro. Его вариант с регулярными выражениями — один из лучших из существующих — с точки зрения мощности и возможностей я бы поставил его на второе место после Perl. Его синтаксис также очень совместим; например, он поддерживает все варианты синтаксиса именованного захвата, имеющиеся в Perl, Python, PHP и .NET.

Отказ от ответственности: у меня нет финансовой или личной заинтересованности в EditPad Pro; Я просто им пользуюсь и жизни без него не представляю. :D

person Alan Moore    schedule 11.09.2009
comment
Почти все функции Notepad++ кажутся недоделанными, я не знаю, как кто-то использует этот редактор. - person Chad Birch; 19.05.2010

notepad++ поддерживает чередование, но чередующиеся термины должны быть заключены в [ ]. например:

(www.mysite.co.uk\/[\/\w]*\/[-.\w]*.[html|css]:)[\s]*.*[/|'|"]([-\w.]*.[gif|jpg|ico]).*

Над каким регулярным выражением я работал, когда искал блокнот ++ и чередование.

** РЕДАКТИРОВАТЬ: Хорошо, это работает неправильно, я беру это обратно. Он рассматривает символы внутри [] как класс.

person Tim Slade    schedule 29.07.2010