0

我有以下代码

<?
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);

但这不起作用,其中的 ( 似乎有问题。

知道我该怎么做吗?

4

2 回答 2

1

通过查看您的原始帖子,(在您的正则表达式更改为 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
于 2012-07-23T18:12:41.590 回答
-1

您可以使用反斜杠转义特殊字符(尽管实际上,只是左括号和右括号)。附带说明一下,如果您有一个不错的 IDE,那么它应该具有复杂的正则表达式搜索和替换功能;使用它(尽管如果这样做,您可能还需要转义正斜杠,因为这些是您的 IDE 最有可能使用的分隔符)。

于 2012-07-23T17:59:34.687 回答