BLOGTIMES
2011/11/04

Regexp Assemble For PHP

  php  regex 
このエントリーをはてなブックマークに追加

以前、Net::CIDR::LiteというIPアドレスの羅列からCIDR表現を生成するPerlのライブラリを紹介しましたが、今度はその正規表現版とも言うことが出来るphp向けライブラリが公開されていたのでメモ。
これを使うと、複数の単語にマッチする最適化された正規表現を簡単に得ることが出来ます

正規表現じぇねれーた

改行区切りで単語を入れると、すべての単語にマッチする正規表現を自動的に作成します。
perlにはRegexp::Assembleという正規表現を作成してくれるモジュールがあります。
これを PHPに移植して、 Regexp Assemble For PHPなるモジュールを作って見ました。

例えば、このサイトで使っているコメントのブラックリストの最適化をしてみます。これまで正規表現については単語を単純にOR(|)でつなげていたのですがこのライブラリを使うことでこのように変換することができました。今のところ特に問題はなさそうです。

(anonymous|pharma|condylox|allegra|cum|tramadol|phentermine|addfreestats|cash|enlarge|loan|drug|hoodia|viagra|buy|pill|porn|cheap|casino|lacoste|ringtones|propecia|vibrator|acai|tylenol|codeine|generic|zoloft|tylenol|hydrocodone|percocet|dating|levitra|diet|zolpidem|dvd decrypter|singulair|valsartan|diovan|alprazolam|xanax|migraine|purchase|tablets|\.\.\.)
(?:p(?:h(?:entermine|arma)|ercocet|ropecia|urchase|ill|orn)|a(?:(?:ddfreestat|nonymou)s|l(?:prazolam|legra)|cai)|d(?:(?:atin|ru)g|i(?:ovan|et)|vd decrypter)|c(?:o(?:ndylox|deine)|as(?:ino|h)|heap|um)|v(?:i(?:brator|agra)|alsartan)|t(?:(?:ramad|ylen)ol|ablets)|l(?:acoste|evitra|oan)|h(?:ydrocodone|oodia)|(?:migrain|enlarg)e|zol(?:pidem|oft)|ringtones|singulair|generic|\.\.\.|xanax|buy)

なかなか面白いライブラリですね。
需要ないかもしれませんが、これを使ってNP_BlackListを書き直したりするとちょっとは動作が速くなったりするかもしれません。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4546
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン