diff options
author | Ludovic Arnaud <ludovic_arnaud@users.sourceforge.net> | 2003-04-17 23:47:26 +0000 |
---|---|---|
committer | Ludovic Arnaud <ludovic_arnaud@users.sourceforge.net> | 2003-04-17 23:47:26 +0000 |
commit | ff6fdd67be8d854ce995948538312808399cca95 (patch) | |
tree | 65d75cf5ca86b1f2380c58da3fe14d86d0aff290 | |
parent | a79524cb337ca5e467e5a1a9a5e7f8d756698f98 (diff) | |
download | forums-ff6fdd67be8d854ce995948538312808399cca95.tar forums-ff6fdd67be8d854ce995948538312808399cca95.tar.gz forums-ff6fdd67be8d854ce995948538312808399cca95.tar.bz2 forums-ff6fdd67be8d854ce995948538312808399cca95.tar.xz forums-ff6fdd67be8d854ce995948538312808399cca95.zip |
More bbcode fixes
git-svn-id: file:///svn/phpbb/trunk@3879 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/includes/bbcode.php | 20 | ||||
-rw-r--r-- | phpBB/includes/message_parser.php | 12 | ||||
-rw-r--r-- | phpBB/posting.php | 6 |
3 files changed, 21 insertions, 17 deletions
diff --git a/phpBB/includes/bbcode.php b/phpBB/includes/bbcode.php index 70e1698efc..c34092f35c 100644 --- a/phpBB/includes/bbcode.php +++ b/phpBB/includes/bbcode.php @@ -312,18 +312,18 @@ class bbcode switch ($type) { case 'php': + $str_from = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@'); + $str_to = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@'); + + $code = str_replace($str_to, $str_from, $code); + $remove_tags = FALSE; - if (!preg_match('/<\?(php)? .*? \?>/', $code)) + if (!preg_match('/\<\?.*?\?\>/is', $code)) { $remove_tags = TRUE; $code = "<?php $code ?>"; } - $str_from = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@'); - $str_to = array('<', '>', '"', ':', '[', ']', '(', ')', '{', '}', '.', '@'); - - $code = str_replace($str_to, $str_from, $code); - ob_start(); highlight_string($code); $code = ob_get_contents(); @@ -331,10 +331,12 @@ class bbcode if ($remove_tags) { - $code = preg_replace('/(.*?)<\?php (.*)\?>(.*?)/', '\1\2\3', $code); + $code = preg_replace('!^<code>[\n\r\s\t]*<font color="#[a-z0-9]+">[\n\r\s\t]*(<font color="#[a-z0-9]+">)<\?php (.*)\?></font>[\n\r\s\t]*(</font>)[\n\r\s\t]*</code>[\n\r\s\t]*!is', '\1\2\3', $code); + } + else + { + $code = preg_replace('!^<code>[\n\r\s\t]*<font color="#[a-z0-9]+">[\n\r\s\t]*(.*)</font>[\n\r\s\t]*</code>[\n\r\s\t]*!is', '\1', $code); } - - $code = preg_replace('!^<code>[\n\r\s\t]*<font color="#[a-z0-9]+">[\n\r\s\t]*(.*)</font>[\n\r\s\t]*</code>[\n\r\s\t]*!is', '\\1', $code); break; default: diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index bfacc09e57..2f98b39a67 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -174,11 +174,11 @@ class parse_message // [quote] moved to the second position $this->bbcode_array = array( 8 => array('#\[code(?:=([a-z]+))?\](.+\[/code\])#ise' => "\$this->bbcode_code('\\1', '\\2')"), - 0 => array('#\[quote(?:="(.*?)")?\](.+?)\[/quote\]#ise' => "'[quote:" . $this->bbcode_uid . "' . \$this->bbcode_quote_username('\\1') . ']\\2[/quote:" . $this->bbcode_uid . "]'"), + 0 => array('#\[quote(?:="(.*?)")?\](.+?)\[/quote\]#ise'=> "'[quote:" . $this->bbcode_uid . "' . \$this->bbcode_quote_username('\\1') . ']\\2[/quote:" . $this->bbcode_uid . "]'"), // TODO: validation regexp 11 => array('#\[flash\](.*?)\[/flash\]#i' => '[flash:' . $this->bbcode_uid . ']\1[/flash:' . $this->bbcode_uid . ']'), - 10 => array('#\[email(=.*?)?\](.*?)\[/email\]#ise' => '$this->validate_email("\1", "\2")'), - 9 => array('#\[list(=[a-z|0-1]+)?\].*\[/list\]#ise' => '$this->bbcode_list("\0")'), + 10 => array('#\[email(=.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\\1', '\\2')"), + 9 => array('#\[list(=[a-z|0-1]+)?\].*\[/list\]#ise' => "\$this->bbcode_list('\\0')"), 7 => array('#\[u\](.*?)\[/u\]#is' => '[u:' . $this->bbcode_uid . ']\1[/u:' . $this->bbcode_uid . ']'), 6 => array('!\[color=(#[0-9A-F]{6}|[a-z\-]+)\](.*?)\[/color\]!is' => '[color=\1:' . $this->bbcode_uid . ']\2[/color:' . $this->bbcode_uid . ']'), @@ -186,7 +186,7 @@ class parse_message => '[size=\1:' . $this->bbcode_uid . ']\2[/size:' . $this->bbcode_uid . ']'), 4 => array('#\[img\](https?://)([a-z0-9\-\.,\?!%\*_:;~\\&$@/=\+]+)\[/img\]#i' => '[img:' . $this->bbcode_uid . ']\1\2[/img:' . $this->bbcode_uid . ']'), - 3 => array('#\[url=?(.*?)?\](.*?)\[/url\]#ise' => '$this->validate_url("\1", "\2")'), + 3 => array('#\[url=?(.*?)?\](.*?)\[/url\]#ise' => "\$this->validate_url('\\1', '\\2')"), 2 => array('#\[i\](.*?)\[/i\]#is' => '[i:' . $this->bbcode_uid . ']\1[/i:' . $this->bbcode_uid . ']'), 1 => array('#\[b\](.*?)\[/b\]#is' => '[b:' . $this->bbcode_uid . ']\1[/b:' . $this->bbcode_uid . ']') ); @@ -366,9 +366,9 @@ class parse_message } if ($valid) { - return (empty($var1)) ? '[url:' . $this->bbcode_uid . ']' . $url . '[/url:' . $this->bbcode_uid . ']' : "[url=$url:" . $this->bbcode_uid . ']' . $var2 . '[/url:' . $this->bbcode_uid . ']'; + return (empty($var1)) ? '[url:' . $this->bbcode_uid . ']' . $url . '[/url:' . $this->bbcode_uid . ']' : "[url=$url:" . $this->bbcode_uid . ']' . stripslashes($var2) . '[/url:' . $this->bbcode_uid . ']'; } - return '[url' . $var1 . ']' . $var2 . '[/url]'; + return '[url' . $var1 . ']' . stripslashes($var2) . '[/url]'; } // Replace magic urls of form http://xxx.xxx., www.xxx. and xxx@xxx.xxx. diff --git a/phpBB/posting.php b/phpBB/posting.php index 638f08786e..e093d59139 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -699,10 +699,12 @@ if ($preview) } // Decode text for message display -decode_text($post_text, $message_parser->bbcode_uid); +$bbcode_uid = ($mode == 'quote' && !$preview) ? $row['bbcode_uid'] : $message_parser->bbcode_uid; + +decode_text($post_text, $bbcode_uid); if ($subject) { - decode_text($subject, $message_parser->bbcode_uid); + decode_text($subject, $bbcode_uid); } // Save us some processing time. ;) |