Regex For PHP Code?


Regex For PHP Code?

我有以下代码

<?
php drupal_set_message("Your registration submission has been received.");
drupal_goto("/events-initiatives/events-listing");
?>

我想删除除Your registration submission has been received.之外的所有内容,并且此消息将更改,所以我需要它是一个通配符。所以它也会说

<?php
drupal_set_message("Testing!!!"); 
drupal_goto("/events-initiatives/events-listing"); 
?>

但我不知道如何做PHP代码,我目前的代码是

preg_replace('#(<?php drupal_set_message(").*?("); drupal_goto("/guidelines-resources/professionals/lending-library"); ?>)#', '$1$2', $string);

但这不起作用,它似乎有问题(在它。

你知道我该怎么做吗?

从查看您的原始帖子(在您的正则表达式被更改为PHP代码段之前),我建议您沿着以下几行查找正则表达式:

#<'?php's+drupal_set_message'(".*?"');'s+drupal_goto'("/guidelines-resources/professionals/lending-library"');'s+'?>#

注意这个正则表达式:

  • 用前面的斜杠转义所有特殊字符(例如,?、(和))
  • 用与一个或多个连续空白字符匹配的's+替换单个空格

编辑

重读你的问题后,如果你只想剩下作为参数传递给drupal_set_message的文本,那么试试这个:

$pattern = '#'bdrupal_set_message'("(.*?)"')#';
$found = preg_match($pattern, $subject, $matches);
// if found, $matches[1] will contain the argument to drupal_set_message

您可以用反斜杠转义特殊字符(尽管实际上只是开括号和闭括号)。顺便说一句,如果你有一个不错的IDE,那么它应该有复杂的regex功能的搜索和替换;使用它(尽管如果这样做,您可能还需要转义正斜杠,因为它们是IDE最可能使用的分隔符)。