/** * Formats a message for search result output. * * @param string $text * @return string */ public function parse($text) { // remove nonessentials $text = Regex::compile('<!-- begin:parser_nonessential -->.*?<!-- end:parser_nonessential -->', Regex::DOT_ALL)->replace($text, ''); // remove html codes $text = StringUtil::stripHTML($text); // decode html $text = StringUtil::decodeHTML($text); // get abstract $text = $this->getMessageAbstract($text); // encode html $text = StringUtil::encodeHTML($text); // do highlighting return KeywordHighlighter::getInstance()->doHighlight($text); }
/** * Parses a message. * * @param string $message * @param boolean $enableSmilies * @param boolean $enableHtml * @param boolean $enableBBCodes * @param boolean $doKeywordHighlighting * @return string parsed message */ public function parse($message, $enableSmilies = true, $enableHtml = false, $enableBBCodes = true, $doKeywordHighlighting = true) { $this->cachedCodes = array(); $this->message = $message; // call event EventHandler::getInstance()->fireAction($this, 'beforeParsing'); if ($enableBBCodes) { // cache codes $this->message = $this->cacheCodes($this->message); } if (!$enableHtml) { // encode html $this->message = StringUtil::encodeHTML($this->message); // converts newlines to <br />'s if ($this->getOutputType() == 'text/html') { $this->message = nl2br($this->message); } } else { if ($this->getOutputType() == 'text/simplified-html') { $this->message = StringUtil::stripHTML($this->message); } } // parse bbcodes if ($enableBBCodes) { $this->message = parent::parse($this->message); } // parse smilies if ($enableSmilies) { $this->message = $this->parseSmilies($this->message, $enableHtml); } if ($enableBBCodes && !empty($this->cachedCodes)) { // insert cached codes $this->message = $this->insertCachedCodes($this->message); } // highlight search query if ($doKeywordHighlighting) { $this->message = KeywordHighlighter::getInstance()->doHighlight($this->message); } // replace bad html tags (script etc.) $badSearch = array('/(javascript):/i', '/(about):/i', '/(vbscript):/i'); $badReplace = array('$1<b></b>:', '$1<b></b>:', '$1<b></b>:'); $this->message = preg_replace($badSearch, $badReplace, $this->message); // call event EventHandler::getInstance()->fireAction($this, 'afterParsing'); return $this->message; }