POTI-boardで水素水を拒絶する

水素水のコメントスパムが連日投稿されている場合の考えられる設定。
//拒絶する文字列
$badstring = array("水( | ?)素( | ?)水","\[\/URL\]");
[/URL]も拒絶する設定に入っていますが…。

POTI-boardの拒絶する文字列には、正規表現を使う事ができます。

サルにもわかる正規表現入門

いつも参考にさせて頂いているサイト様。
正規表現全般については他のより詳しいサイトを参考にしていただくとして…。

水素水という文字列を拒絶したとします。
すると、コメントスパムを投稿する業者は、
水 素 水
水 素 水
水素 水
のように、全角スペース、半角スペースを入れて規制をすり抜けようとします。
正規表現が使えるので
水( | ?)素( | ?)水
全角スペースあるいは半角スペースあるいは半角スペースが無いかもしれないという指定になりました。
実際に試してみると、
水素水
水 素 水
水 素 水
水素 水
どのパターンでも拒絶する事ができました。
水素水の素の部分の一文字が変わる場合は?
水.水
でいい筈なのですが…。.の部分が半角英数であれば拒絶…しかし、全角1文字の場合はなぜか動作しません。
水.*水
にすると、今度は、水寿限無水、でも拒絶されて…。
弾きたくない長い文字列でも拒絶されてしまいました。
[/URL]
を拒絶したい場合は…。
POTI-boardの拒絶する文字列では、/ をエスケープする必要があります。
[ ] は正規表現のメタ文字ですから、[ ] そのものを指定したい場合はエスケープする必要があります。
\[\/URL\]
なぜ日本円の通貨の記号が…と思われるかもしれませんが、本来はバックスラッシュです。
POTI-board改とテンプレートシリーズ

POTI-board改 v1.41.1 lot.180423 18/04/23 up
かなり無理を言って、
//指定文字列+本文へのURLの書き込みで拒絶(正規表現)
$badstring_and_url = array("ブランド","偽物","財布","\[\/URL\]");
という設定項目を作っていただきました。
デフォルトの設定で、本文にURLが記入されていて、かつ、ブランド、偽物、財布、[/URL]の文字列があると拒絶します。

しかし、知らなかったのですが、従来の拒絶する文字列でも結果的に同じになる書き方が…。
//拒絶する文字列
$badstring = array("HOGE","(:\/\/[\s\S]+(財布|偽物)|(財布|偽物)[\s\S]+:\/\/)");
この場合は、URL+拒絶する文字列の前後が入れ替わる事を想定して同じ文字列を二度指定しなければならなくなるので、面倒といえば面倒なのですが…。

正規表現に詳しい人なら、従来のままでも弾く事ができる内容だったようです。
でも、この書き方だとタイトルに偽物、本文にURLの場合は弾かれない…のかな。

この記事へのコメント

コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。