aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid M <davidmj@users.sourceforge.net>2006-08-15 01:08:51 +0000
committerDavid M <davidmj@users.sourceforge.net>2006-08-15 01:08:51 +0000
commit75ca1c9764aa8d3b8c8c845516849d90754ee88e (patch)
tree636bc78dde02a3973e2c5fcbf28981601a8729c2
parent332bd12835b5330637024c77e31ba98ab27e9699 (diff)
downloadforums-75ca1c9764aa8d3b8c8c845516849d90754ee88e.tar
forums-75ca1c9764aa8d3b8c8c845516849d90754ee88e.tar.gz
forums-75ca1c9764aa8d3b8c8c845516849d90754ee88e.tar.bz2
forums-75ca1c9764aa8d3b8c8c845516849d90754ee88e.tar.xz
forums-75ca1c9764aa8d3b8c8c845516849d90754ee88e.zip
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
-rw-r--r--phpBB/includes/functions.php2
-rw-r--r--phpBB/includes/message_parser.php27
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();