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+1つ以上の連続する空白文字に一致する単一のスペースを置き換えます

編集

質問を読み直した後、残したいのが引数として渡されるテキストだけである場合は、次のことを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 に答える