summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--inc/common.php24
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;
}