From 75ca1c9764aa8d3b8c8c845516849d90754ee88e Mon Sep 17 00:00:00 2001 From: David M Date: Tue, 15 Aug 2006 01:08:51 +0000 Subject: [PATCH] If i could force you all to use PHP 5.1.0+, then i could just use the count param with preg_replace. Oh well... git-svn-id: file:///svn/phpbb/trunk@6292 89ea8834-ac86-4346-8a33-228a782c2dd0 --- phpBB/includes/functions.php | 2 +- phpBB/includes/message_parser.php | 27 +++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 48fec2d795..ebe94adac7 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2375,7 +2375,7 @@ function get_preg_expression($mode) switch ($mode) { case 'email': - return '[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+'; + return '[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*[a-z]+'; break; } diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index 6aa78d091f..02ac41d503 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -47,7 +47,6 @@ class bbcode_firstpass extends bbcode $this->bbcode_bitfield = ''; $bitfield = new bitfield(); - $size = strlen($this->message); foreach ($this->bbcodes as $bbcode_name => $bbcode_data) { if (isset($bbcode_data['disabled']) && $bbcode_data['disabled']) @@ -63,20 +62,28 @@ class bbcode_firstpass extends bbcode } else { + // TODO: Review this + $found = false; foreach ($bbcode_data['regexp'] as $regexp => $replacement) { + if (!$found) + { + $before = strlen($this->message); + } $this->message = preg_replace($regexp, $replacement, $this->message); + if (!$found) + { + $after = strlen($this->message); + if ($before != $after) + { + // Because we add bbcode_uid to all tags, the message length + // will increase whenever a tag is found + $bitfield->set($bbcode_data['bbcode_id']); + $found = true; + } + } } } - - // Because we add bbcode_uid to all tags, the message length - // will increase whenever a tag is found - $new_size = strlen($this->message); - if ($size != $new_size) - { - $bitfield->set($bbcode_data['bbcode_id']); - $size = $new_size; - } } $this->bbcode_bitfield = $bitfield->get_base64();