我有以下代码
<?
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最可能使用的分隔符)。