web-dev-qa-db-ja.com

プライベートメッセージに冒とく的な言葉を含めることに対するユーザーへの警告

Drupal 7. Drupal 6には、 プライベートメッセージ。 の本文または件名内の許可されていない単語をチェックするルールを構成する方法がありました。

私はそのルールをDrupal 7.に適合させようとしています。このチェックの目的は、送信者のメッセージに禁止された単語が見つかった場合に、送信者に警告メッセージ(電子メールまたはプライベートメッセージ)を送信することです。一時的な禁止、ユーザーが存続する場合の永続的な禁止など、さまざまなアクションに拡張できます。

これが最初のルールのエクスポートです(しかし、私はそれを機能させることができません:)

{ "rules_warning_to_privatemsg_sender_about_curse_words_" : {
    "LABEL" : "Warning to privatemsg sender about curse words.",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "rules_i18n", "privatemsg_rules" ],
    "ON" : { "privatemsg_insert" : [] },
    "IF" : [
      { "text_matches" : {
          "text" : [ "privatemsg-message:body" ],
          "match" : "Word1|Word2|Word3",
          "operation" : "regex"
        }
      }
    ],
    "DO" : [ { "drupal_message" : { "message" : "Bad Word!", "type" : "warning" } } ]
  }
}    

Word1、Word2、およびWord3は、チェックする単語です。それらは「|」で区切られます(パイプまたは垂直バー)文字。

この形式はDrupal 6に適合しましたが、それでもDrual7で機能するかどうかはわかりません。

UPDATE:Regex Webサイトを調べた後、式を変更してルールを機能させることができました。以下の私の答えを参照してください。

1
user14666

ついに機能するフォーマットを見つけました。

Drupalのドキュメントに記載されている内容とは異なり、形式は次のとおりです。

Word1|Word2|Word3

動作しません。

適切な構文は次のとおりです。

^.*(Word1|Word2|Word3).*$

すなわち:キャレットその後ドットその後その後開き括弧その後検索する単語は縦棒 then 閉じ括弧 then dot then star then ドル記号

括弧の間に多くの単語が追加される場合があります。正規表現は複数形の中の単数形と一致するため、複数形を追加する必要はありません。

注意:RegexはREGular EXpressionの略であるため、この値は条件ページの下部で選択する必要があります。

1
user14666