diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2006-06-22 15:14:03 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2006-06-22 15:14:03 +0000 |
commit | 725b21f2d206efb4b34eb95ec3329bc81f66b805 (patch) | |
tree | 7de41ee058c21e1884bc5d2292f5e7014a587890 /phpBB/includes/message_parser.php | |
parent | daa0435614af7bed95e71f3b11aa2c372df3958d (diff) | |
download | forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.gz forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.bz2 forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.tar.xz forums-725b21f2d206efb4b34eb95ec3329bc81f66b805.zip |
time to squash some bugs
git-svn-id: file:///svn/phpbb/trunk@6114 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/message_parser.php')
-rw-r--r-- | phpBB/includes/message_parser.php | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index a4d003c3a2..d74a58524f 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -79,6 +79,23 @@ class bbcode_firstpass extends bbcode } /** + * Prepare some bbcodes for better parsing + */ + function prepare_bbcodes() + { + // Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.) + if (strpos($this->message, '[quote') !== false) + { + $in = str_replace("\r\n", "\n", $this->message); + + $this->message = preg_replace(array('#\[quote(=".*?")?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $this->message); + $this->message = preg_replace(array('#\[quote(=".*?")?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $this->message); + } + + // Add other checks which needs to be placed before actually parsing anything (be it bbcodes, smilies, urls...) + } + + /** * Init bbcode data for later parsing */ function bbcode_init() @@ -565,12 +582,6 @@ class bbcode_firstpass extends bbcode $tok = ']'; $out = '['; - // Add newline at the end and in front of each quote block to prevent parsing errors (urls, smilies, etc.) - $in = preg_replace(array('#\[quote(=".*?")?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $in); - $in = preg_replace(array('#\[quote(=".*?")?\]([^\n])#is', '#([^\n])\[\/quote\]#is'), array("[quote\\1]\n\\2", "\\1\n[/quote]"), $in); - - $in = str_replace("\r\n", "\n", str_replace('\"', '"', trim($in))); - $in = substr($in, 1); $close_tags = $error_ary = array(); $buffer = ''; @@ -897,15 +908,7 @@ class parse_message extends bbcode_firstpass } } - // Parse smilies - if ($allow_smilies) - { - $this->smilies($config['max_' . $mode . '_smilies']); - } - - $num_urls = 0; - - // Parse BBCode + // Prepare BBcode (just prepares some tags for better parsing) if ($allow_bbcode && strpos($this->message, '[') !== false) { $this->bbcode_init(); @@ -917,8 +920,22 @@ class parse_message extends bbcode_firstpass $this->bbcodes[$bool]['disabled'] = true; } } - $this->parse_bbcode(); + $this->prepare_bbcodes(); + } + + // Parse smilies + if ($allow_smilies) + { + $this->smilies($config['max_' . $mode . '_smilies']); + } + + $num_urls = 0; + + // Parse BBCode + if ($allow_bbcode && strpos($this->message, '[') !== false) + { + $this->parse_bbcode(); $num_urls += $this->parsed_items['url']; } |