class_bbcode.php
来自「sabreipb 2.1.6 utf-8中文版本!」· PHP 代码 · 共 704 行 · 第 1/2 页
PHP
704 行
//$t = $this->my_strip_tags( $t ); } if ( $this->parse_wordwrap > 0 ) { $t = $this->my_wordwrap( $t, $this->parse_wordwrap ); } //----------------------------------------- // Fix up <br /> in URLs //----------------------------------------- $t = preg_replace( "#(<a href=[\"'])(.+?)([\"'])#ise", "\$this->_clean_long_url('\\1', '\\2', '\\3')", $t ); //----------------------------------------- // Custom BB code //----------------------------------------- if ( strstr( $t, '[/' ) ) { $t = $this->post_db_parse_bbcode($t); } return $t; } /*-------------------------------------------------------------------------*/ // This function processes the text before showing for editing, etc /*-------------------------------------------------------------------------*/ /** * This function processes the text before showing for editing, etc * * @param string Raw text * @return string Converted text */ function pre_edit_parse($txt="") { //----------------------------------------- // Clean up BR tags //----------------------------------------- $txt = str_replace( "<br>" , "\n", $txt ); $txt = str_replace( "<br />", "\n", $txt ); # Make EMO_DIR safe so the ^> regex works $txt = str_replace( "<#EMO_DIR#>", "<#EMO_DIR>", $txt ); # New emo $txt = preg_replace( "#<([^>]+?)emoid=\"(.+?)\"([^>]+?)".">#is", "\\2", $txt ); # And convert it back again... $txt = str_replace( "<#EMO_DIR>", "<#EMO_DIR#>", $txt ); # Legacy $txt = preg_replace( "#<!--emo&(.+?)-->.+?<!--endemo-->#", "\\1" , $txt ); //----------------------------------------- // Clean up nbsp //----------------------------------------- $txt = str_replace( ' ', "\t", $txt ); $txt = str_replace( ' ' , " ", $txt ); if ( $this->parse_bbcode ) { //----------------------------------------- // SQL //----------------------------------------- $txt = preg_replace( "#<!--sql-->(.+?)<!--sql1-->(.+?)<!--sql2-->(.+?)<!--sql3-->#eis", "\$this->unconvert_sql(\"\\2\")", $txt); //----------------------------------------- // HTML //----------------------------------------- $txt = preg_replace( "#<!--html-->(.+?)<!--html1-->(.+?)<!--html2-->(.+?)<!--html3-->#ise", "\$this->unconvert_htm(\"\\2\")", $txt); //----------------------------------------- // Images / Flash //----------------------------------------- $txt = preg_replace( "#<!--Flash (.+?)-->.+?<!--End Flash-->#e", "\$this->unconvert_flash('\\1')", $txt ); $txt = preg_replace( "#<img src=[\"'](\S+?)['\"].+?".">#" , "\[img\]\\1\[/img\]" , $txt ); //----------------------------------------- // Email, URLs //----------------------------------------- $txt = preg_replace( "#<a href=[\"']mailto:(.+?)['\"]>(.+?)</a>#" , "\[email=\\1\]\\2\[/email\]" , $txt ); $txt = preg_replace( "#<a href=[\"'](http://|https://|ftp://|news://)?(\S+?)['\"].+?".">(.+?)</a>#" , "\[url=\\1\\2\]\\3\[/url\]" , $txt ); //----------------------------------------- // Quote //----------------------------------------- $txt = preg_replace( "#<!--QuoteBegin-->(.+?)<!--QuoteEBegin-->#" , '[quote]' , $txt ); $txt = preg_replace( "#<!--QuoteBegin-{1,2}([^>]+?)\+([^>]+?)-->(.+?)<!--QuoteEBegin-->#", "[quote=\\1,\\2]" , $txt ); $txt = preg_replace( "#<!--QuoteBegin-{1,2}([^>]+?)\+-->(.+?)<!--QuoteEBegin-->#" , "[quote=\\1]" , $txt ); $txt = preg_replace( "#<!--QuoteEnd-->(.+?)<!--QuoteEEnd-->#" , '[/quote]' , $txt ); //----------------------------------------- // New quote //----------------------------------------- $txt = preg_replace( "#<!--quoteo([^>]+?)?-->(.+?)<!--quotec-->#sie", "\$this->_parse_new_quote('\\1', '\\2' )" , $txt ); //----------------------------------------- // left, right, center //----------------------------------------- $txt = preg_replace( "#<div align=\"(left|right|center)\">(.+?)</div>#is" , "[\\1]\\2[/\\1]", $txt ); //----------------------------------------- // Ident => Block quote //----------------------------------------- while( preg_match( "#<blockquote>(.+?)</blockquote>#is" , $txt ) ) { $txt = preg_replace( "#<blockquote>(.+?)</blockquote>#is" , "[indent]\\1[/indent]", $txt ); } //----------------------------------------- // CODE //----------------------------------------- $txt = preg_replace( "#<!--c1-->(.+?)<!--ec1-->#", '[code]' , $txt ); $txt = preg_replace( "#<!--c2-->(.+?)<!--ec2-->#", '[/code]', $txt ); //----------------------------------------- // Easy peasy //----------------------------------------- $txt = preg_replace( "#<i>(.+?)</i>#is" , "\[i\]\\1\[/i\]" , $txt ); $txt = preg_replace( "#<b>(.+?)</b>#is" , "\[b\]\\1\[/b\]" , $txt ); $txt = preg_replace( "#<strike>(.+?)</strike>#is" , "\[s\]\\1\[/s\]" , $txt ); $txt = preg_replace( "#<u>(.+?)</u>#is" , "\[u\]\\1\[/u\]" , $txt ); //----------------------------------------- // List headache //----------------------------------------- $txt = preg_replace( "#(\n){0,}<ul>#" , "\\1\[list\]" , $txt ); $txt = preg_replace( "#(\n){0,}<ol type='(a|A|i|I|1)'>#" , "\\1\[list=\\2\]\n" , $txt ); $txt = preg_replace( "#(\n){0,}<li>#" , "\n\[*\]" , $txt ); $txt = preg_replace( "#(\n){0,}</ul>(\n){0,}#", "\n\[/list\]\\2" , $txt ); $txt = preg_replace( "#(\n){0,}</ol>(\n){0,}#", "\n\[/list\]\\2" , $txt ); //----------------------------------------- // Opening style attributes //----------------------------------------- $txt = preg_replace( "#<!--sizeo:(.+?)-->(.+?)<!--/sizeo-->#" , "[size=\\1]" , $txt ); $txt = preg_replace( "#<!--coloro:(.+?)-->(.+?)<!--/coloro-->#" , "[color=\\1]", $txt ); $txt = preg_replace( "#<!--fonto:(.+?)-->(.+?)<!--/fonto-->#" , "[font=\\1]" , $txt ); $txt = preg_replace( "#<!--backgroundo:(.+?)-->(.+?)<!--/backgroundo-->#" , "[background=\\1]" , $txt ); //----------------------------------------- // Closing style attributes //----------------------------------------- $txt = preg_replace( "#<!--sizec-->(.+?)<!--/sizec-->#" , "[/size]" , $txt ); $txt = preg_replace( "#<!--colorc-->(.+?)<!--/colorc-->#" , "[/color]", $txt ); $txt = preg_replace( "#<!--fontc-->(.+?)<!--/fontc-->#" , "[/font]" , $txt ); $txt = preg_replace( "#<!--backgroundc-->(.+?)<!--/backgroundc-->#", "[/background]" , $txt ); //----------------------------------------- // LEGACY SPAN TAGS //----------------------------------------- while ( preg_match( "#<span style=['\"]font-size:(.+?)pt;line-height:100%['\"]>(.+?)</span>#is", $txt ) ) { $txt = preg_replace( "#<span style=['\"]font-size:(.+?)pt;line-height:100%['\"]>(.+?)</span>#ise" , "\$this->unconvert_size('\\1', '\\2')", $txt ); } while ( preg_match( "#<span style=['\"]color:(.+?)['\"]>(.+?)</span>#is", $txt ) ) { $txt = preg_replace( "#<span style=['\"]color:(.+?)['\"]>(.+?)</span>#is" , "\[color=\\1\]\\2\[/color\]", $txt ); } while ( preg_match( "#<span style=['\"]font-family:(.+?)['\"]>(.+?)</span>#is", $txt ) ) { $txt = preg_replace( "#<span style=['\"]font-family:(.+?)['\"]>(.+?)</span>#is", "\[font=\\1\]\\2\[/font\]", $txt ); } while ( preg_match( "#<span style=['\"]background-color:(.+?)['\"]>(.+?)</span>#is", $txt ) ) { $txt = preg_replace( "#<span style=['\"]background-color:(.+?)['\"]>(.+?)</span>#is", "\[background=\\1\]\\2\[/font\]", $txt ); } # Legacy <strike> $txt = preg_replace( "#<s>(.+?)</s>#is" , "\[s\]\\1\[/s\]" , $txt ); //----------------------------------------- // Tidy up the end quote stuff //----------------------------------------- $txt = preg_replace( "#(\[/QUOTE\])\s*?<br />\s*#si", "\\1\n", $txt ); $txt = preg_replace( "#(\[/QUOTE\])\s*?<br>\s*#si" , "\\1\n", $txt ); $txt = preg_replace( "#<!--EDIT\|.+?\|.+?-->#" , "" , $txt ); $txt = str_replace( "</li>", "", $txt ); $txt = str_replace( "™", "(tm)", $txt ); } //----------------------------------------- // Parse html //----------------------------------------- if ( $this->parse_html ) { $txt = str_replace( "'", "'", $txt); } return trim(stripslashes($txt)); } /*-------------------------------------------------------------------------*/ // OVERWRITE DEFAULT: convert_emoticon: /*-------------------------------------------------------------------------*/ /** * Convert emoticons: New method * * @param string Emo code :) * @param string Emo Image URL * @return string Converted text */ function convert_emoticon($code="", $image="") { if ( ! $code or ! $image ) { return; } //----------------------------------------- // Remove slashes added by preg_quote //----------------------------------------- $code = stripslashes($code); $this->emoticon_count++; return "<img src=\"{$this->ipsclass->vars['EMOTICONS_URL']}/$image\" style=\"vertical-align:middle\" emoid=\"".trim($code)."\" border=\"0\" alt=\"$image\" />"; } /*-------------------------------------------------------------------------*/ // OVERWRITE DEFAULT: regex_font_attr: /*-------------------------------------------------------------------------*/ /** * Convert FONT / SIZE / COLOR tags: New method * * @param array Input vars * @return string Converted text */ function regex_font_attr( $IN ) { if ( ! is_array($IN) ) { return; } //----------------------------------------- // INIT (It is!) //----------------------------------------- $style = $IN['1']; $text = stripslashes($IN['2']); $type = $IN['s']; //----------------------------------------- // Remove " //----------------------------------------- $style = str_replace( '"', '', $style ); //----------------------------------------- // Make safe //----------------------------------------- $style = preg_replace( "/[&\(\)\.\%\[\]<>\'\"]/", "", preg_replace( "#^(.+?)(?:;|$)#", "\\1", $style ) ); //----------------------------------------- // Size //----------------------------------------- if ($type == 'size') { $style = intval($style); $real = $this->convert_bbsize_to_realsize( $style ); return "<!--sizeo:{$style}--><span style=\"font-size:".$real."pt;line-height:100%\"><!--/sizeo-->".$text."<!--sizec--></span><!--/sizec-->"; } //----------------------------------------- // BACKGROUND //----------------------------------------- else if ($type == 'background') { $style = preg_replace( "/[^\d\w\#\s]/s", "", $style ); return "<!--backgroundo:{$style}--><span style=\"background-color:".$style."\"><!--/backgroundo-->".$text."<!--backgroundc--></span><!--/backgroundc-->"; } //----------------------------------------- // COLOR //----------------------------------------- else if ($type == 'col') { $style = preg_replace( "/[^\d\w\#\s]/s", "", $style ); return "<!--coloro:{$style}--><span style=\"color:".$style."\"><!--/coloro-->".$text."<!--colorc--></span><!--/colorc-->"; } //----------------------------------------- // FONT //----------------------------------------- else if ($type == 'font') { $style = preg_replace( "/[^\d\w\#\-\_\s]/s", "", $style ); return "<!--fonto:{$style}--><span style=\"font-family:".$style."\"><!--/fonto-->".$text."<!--fontc--></span><!--/fontc-->"; } } /*-------------------------------------------------------------------------*/ // Clean up URL /*-------------------------------------------------------------------------*/ /** * Clean up long URLs * * @param string BEFORE URL * @param string URL * @param string SANS URL * @return string Converted text */ function _clean_long_url( $before, $url, $after ) { $before = stripslashes( $before ); $url = stripslashes( $url ); $after = stripslashes( $after ); return $before . str_replace( '<br />', '', str_replace( "? ", "?", $url ) ) . $after; }}?>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?