Zeile 6 | Zeile 6 |
---|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* $Id: class_parser.php 5141 2010-07-29 23:32:11Z RyanGordon $
| * $Id: class_parser.php 5380 2011-02-21 12:04:43Z Tomm $
|
*/
/*
| */
/*
|
Zeile 27 | Zeile 27 |
---|
/** * Internal cache of MyCode. *
|
/** * Internal cache of MyCode. *
|
| * @access public
|
* @var mixed */ public $mycode_cache = 0;
| * @var mixed */ public $mycode_cache = 0;
|
Zeile 34 | Zeile 35 |
---|
/** * Internal cache of smilies *
|
/** * Internal cache of smilies *
|
| * @access public
|
* @var mixed */ public $smilies_cache = 0;
| * @var mixed */ public $smilies_cache = 0;
|
Zeile 41 | Zeile 43 |
---|
/** * Internal cache of badwords filters *
|
/** * Internal cache of badwords filters *
|
| * @access public
|
* @var mixed */ public $badwords_cache = 0;
| * @var mixed */ public $badwords_cache = 0;
|
Zeile 48 | Zeile 51 |
---|
/** * Base URL for smilies *
|
/** * Base URL for smilies *
|
| * @access public
|
* @var string */ public $base_url;
| * @var string */ public $base_url;
|
Zeile 55 | Zeile 59 |
---|
/** * Parsed Highlights cache *
|
/** * Parsed Highlights cache *
|
* @access private
| * @access public
|
* @var array */
|
* @var array */
|
var $highlight_cache = array();
| public $highlight_cache = array();
|
/** * Options for this parsed message (Private - set by parse_message argument) *
|
/** * Options for this parsed message (Private - set by parse_message argument) *
|
* @access private
| * @access public
|
* @var array */
|
* @var array */
|
private $options;
| public $options;
|
/** * Parses a message with the specified options.
| /** * Parses a message with the specified options.
|
Zeile 78 | Zeile 82 |
---|
function parse_message($message, $options=array()) { global $plugins, $mybb;
|
function parse_message($message, $options=array()) { global $plugins, $mybb;
|
|
|
// Set base URL for parsing smilies $this->base_url = $mybb->settings['bburl'];
| // Set base URL for parsing smilies $this->base_url = $mybb->settings['bburl'];
|
Zeile 111 | Zeile 115 |
---|
else { while(preg_match("#<script(.*)>(.*)</script(.*)>#is", $message))
|
else { while(preg_match("#<script(.*)>(.*)</script(.*)>#is", $message))
|
{
| {
|
$message = preg_replace("#<script(.*)>(.*)</script(.*)>#is", "<script$1>$2</script$3>", $message); }
|
$message = preg_replace("#<script(.*)>(.*)</script(.*)>#is", "<script$1>$2</script$3>", $message); }
|
// Remove these completely $message = preg_replace("#\s*<base[^>]*>\s*#is", "", $message); $message = preg_replace("#\s*<meta[^>]*>\s*#is", "", $message);
|
|
$message = str_replace(array('<?php', '<!--', '-->', '?>', "<br />\n", "<br>\n"), array('<?php', '<!--', '-->', '?>', "\n", "\n"), $message); } // If MyCode needs to be replaced, first filter out [code] and [php] tags.
|
$message = str_replace(array('<?php', '<!--', '-->', '?>', "<br />\n", "<br>\n"), array('<?php', '<!--', '-->', '?>', "\n", "\n"), $message); } // If MyCode needs to be replaced, first filter out [code] and [php] tags.
|
if($this->options['allow_mycode'])
| if($this->options['allow_mycode'])
|
{ // First we split up the contents of code and php tags to ensure they're not parsed. preg_match_all("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", $message, $code_matches, PREG_SET_ORDER);
| { // First we split up the contents of code and php tags to ensure they're not parsed. preg_match_all("#\[(code|php)\](.*?)\[/\\1\](\r\n?|\n?)#si", $message, $code_matches, PREG_SET_ORDER);
|
Zeile 147 | Zeile 149 |
---|
}
// Replace MyCode if requested.
|
}
// Replace MyCode if requested.
|
if($this->options['allow_mycode']) {
| if($this->options['allow_mycode']) {
|
$message = $this->parse_mycode($message, $this->options); }
| $message = $this->parse_mycode($message, $this->options); }
|
Zeile 167 | Zeile 169 |
---|
if(count($code_matches) > 0) { foreach($code_matches as $text)
|
if(count($code_matches) > 0) { foreach($code_matches as $text)
|
{ // Fix up HTML inside the code tags so it is clean if($options['allow_html'] != 0) { $text[2] = $this->parse_html($text[2]); }
| {
|
if(my_strtolower($text[1]) == "code")
|
if(my_strtolower($text[1]) == "code")
|
{
| {
|
$code = $this->mycode_parse_code($text[2]);
|
$code = $this->mycode_parse_code($text[2]);
|
}
| }
|
elseif(my_strtolower($text[1]) == "php") { $code = $this->mycode_parse_php($text[2]);
| elseif(my_strtolower($text[1]) == "php") { $code = $this->mycode_parse_php($text[2]);
|
Zeile 185 | Zeile 181 |
---|
$message = preg_replace("#\<mybb-code>\n?#", $code, $message, 1); } }
|
$message = preg_replace("#\<mybb-code>\n?#", $code, $message, 1); } }
|
| }
if($this->options['allow_html']) { $message = preg_replace_callback("#<((m[^a])|(b[^diloru>])|(s[^aemptu>]))(\s*[^>]*)>#si", create_function( '$matches', 'return htmlspecialchars($matches[0]);' ), $message);
|
}
if($options['nl2br'] !== 0)
| }
if($options['nl2br'] !== 0)
|
Zeile 395 | Zeile 399 |
---|
{ foreach($smilies as $sid => $smilie) {
|
{ foreach($smilies as $sid => $smilie) {
|
$this->smilies_cache[$smilie['find']] = "<img src=\"{$this->base_url}{$smilie['image']}\" style=\"vertical-align: middle;\" border=\"0\" alt=\"{$smilie['name']}\" title=\"{$smilie['name']}\" />";
| $this->smilies_cache[$smilie['find']] = "<img src=\"{$smilie['image']}\" style=\"vertical-align: middle;\" border=\"0\" alt=\"{$smilie['name']}\" title=\"{$smilie['name']}\" />";
|
} } }
| } } }
|
Zeile 502 | Zeile 506 |
---|
{ $badword['replacement'] = "*****"; }
|
{ $badword['replacement'] = "*****"; }
|
$badword['badword'] = str_replace('\*', '(.*)',preg_quote($badword['badword'], "#")); $message = preg_replace("#(^|\s|\W)".$badword['badword']."(\W|\s|$)#i", "\\1".$badword['replacement']."\\2", $message);
| // Take into account the position offset for our last replacement. $index = substr_count($badword['badword'], '*')+2; $badword['badword'] = str_replace('\*', '([a-zA-Z0-9_]{1})', preg_quote($badword['badword'], "#")); // Ensure we run the replacement enough times but not recursively (i.e. not while(preg_match..)) $count = preg_match_all("#(^|\W)".$badword['badword']."(\W|$)#i", $message, $matches); for($i=0; $i < $count; ++$i) { $message = preg_replace("#(^|\W)".$badword['badword']."(\W|$)#i", "\\1".$badword['replacement'].'\\'.$index, $message); }
|
} } if($options['strip_tags'] == 1)
| } } if($options['strip_tags'] == 1)
|
Zeile 522 | Zeile 535 |
---|
function fix_javascript($message) { $js_array = array(
|
function fix_javascript($message) { $js_array = array(
|
"#(&\#(0*)106;|&\#(0*)74;|j)((&\#(0*)97;|&\#(0*)65;|a)(&\#(0*)118;|&\#(0*)86;|v)(&\#(0*)97;|&\#(0*)65;|a)(\s)?(&\#(0*)115;|&\#(0*)83;|s)(&\#(0*)99;|&\#(0*)67;|c)(&\#(0*)114;|&\#(0*)82;|r)(&\#(0*)105;|&\#(0*)73;|i)(&\#112;|&\#(0*)80;|p)(&\#(0*)116;|&\#(0*)84;|t)(&\#(0*)58;|\:))#i",
| "#(&\#(0*)106;?|&\#(0*)74;?|&\#x(0*)4a;?|&\#x(0*)6a;?|j)((&\#(0*)97;?|&\#(0*)65;?|a)(&\#(0*)118;?|&\#(0*)86;?|v)(&\#(0*)97;?|&\#(0*)65;?|a)(\s)?(&\#(0*)115;?|&\#(0*)83;?|s)(&\#(0*)99;?|&\#(0*)67;?|c)(&\#(0*)114;?|&\#(0*)82;?|r)(&\#(0*)105;?|&\#(0*)73;?|i)(&\#112;?|&\#(0*)80;?|p)(&\#(0*)116;?|&\#(0*)84;?|t)(&\#(0*)58;?|\:))#i",
|
"#(o)(nmouseover\s?=)#i", "#(o)(nmouseout\s?=)#i", "#(o)(nmousedown\s?=)#i",
| "#(o)(nmouseover\s?=)#i", "#(o)(nmouseout\s?=)#i", "#(o)(nmousedown\s?=)#i",
|
Zeile 1008 | Zeile 1021 |
---|
function mycode_auto_url($message) { $message = " ".$message;
|
function mycode_auto_url($message) { $message = " ".$message;
|
$message = preg_replace("#([\>\s\(\)])(http|ftp|news){1}://([^\/\"\s\<\[\.]+\.([^\/\"\s\<\[\.]+\.)*[\w]+(:[0-9]+)?(/[^\"\s<\[]*)?)#i", "$1[url]$2://$3[/url]", $message);
| $message = preg_replace("#([\>\s\(\)])(http|https|ftp|news){1}://([^\/\"\s\<\[\.]+\.([^\/\"\s\<\[\.]+\.)*[\w]+(:[0-9]+)?(/[^\"\s<\[]*)?)#i", "$1[url]$2://$3[/url]", $message);
|
$message = preg_replace("#([\>\s\(\)])(www|ftp)\.(([^\/\"\s\<\[\.]+\.)*[\w]+(:[0-9]+)?(/[^\"\s<\[]*)?)#i", "$1[url]$2.$3[/url]", $message); $message = my_substr($message, 1);
| $message = preg_replace("#([\>\s\(\)])(www|ftp)\.(([^\/\"\s\<\[\.]+\.)*[\w]+(:[0-9]+)?(/[^\"\s<\[]*)?)#i", "$1[url]$2.$3[/url]", $message); $message = my_substr($message, 1);
|