diff options
-rw-r--r-- | inc/common.php | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/inc/common.php b/inc/common.php index 6be27570a..a1325e2fc 100644 --- a/inc/common.php +++ b/inc/common.php @@ -329,16 +329,20 @@ function checkwordblock(){ if(!$conf['usewordblock']) return false; - $blocks = file('conf/wordblock.conf'); - $re = array(); - #build regexp from blocks - foreach($blocks as $block){ - $block = preg_replace('/#.*$/','',$block); - $block = trim($block); - if(empty($block)) continue; - $re[] = $block; - } - if(preg_match('#('.join('|',$re).')#si',$TEXT)) return true; + $blockfile = file('conf/wordblock.conf'); + //read file in chunks of 600 - this should work around the + //MAX_PATTERN_SIZE in PCRE + while($blocks = array_splice($blockfile,0,600)){ + $re = array(); + #build regexp from blocks + foreach($blocks as $block){ + $block = preg_replace('/#.*$/','',$block); + $block = trim($block); + if(empty($block)) continue; + $re[] = $block; + } + if(preg_match('#('.join('|',$re).')#si',$TEXT)) return true; + } return false; } |