Шаблон $this->input->post("[\*w\]");
не работает, потому что:
$
— это специальный символ, соответствующий концу строки, вам нужно использовать \$
, чтобы сопоставить его как буквальный символ[\*w'\]
является искаженным шаблоном, так как нет соответствующего неэкранированного ]
для [
, открывающего класс символов. Кроме того, w
просто соответствует w
, а не любой букве, цифре или подчеркиванию, \w
делает это.Вы можете использовать
Найти то, что: \$this->input->post\("(\w*)"\);
Заменить: $post_data["$1"];
Если внутри двойных кавычек может быть любой символ, используйте .*?
вместо \w*
:
Найти то, что: \$this->input->post\("(.*?)"\);
Испытание АЭС:
Используйте этот шаблон, чтобы соответствовать желаемому тексту \$this->input->post\(("[^"]+")\);
И замените его узором \$post_data\[\1\]
Объяснение:
\$this->input->post
- соответствует $this->input->post
буквально
\(("[^"]+")\);
- сопоставьте (
буквально, затем сопоставьте двойные кавычки и все, что между ними, с "[^"]+"
и сохраните в первой группе захвата, затем сопоставьте );
буквально
$this->input->post("product_name");
к
$post_data["product_name"];
заменить, с активированным регулярным выражением
this->input->post\("(.*)"\);
к
post_data\["\1"\];
\x
с числом x соответствует x-му совпадению, пойманному в скобках. Здесь мы ловим внутри любого персонажа this->input->post(XXXX);
Не забудьте экранировать специальный символ с помощью \
.
Ваши специальные символы были []()
Вы ссылаетесь на соответствующую группу ($1), которую не создавали. Скобка Pu вне *w, чтобы сопоставить это слово и передать его на этап замены