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#>", "&lt;#EMO_DIR&gt;", $txt );				# New emo		$txt = preg_replace( "#<([^>]+?)emoid=\"(.+?)\"([^>]+?)".">#is", "\\2", $txt );				# And convert it back again...		$txt = str_replace( "&lt;#EMO_DIR&gt;", "<#EMO_DIR#>", $txt );				# Legacy		$txt = preg_replace( "#<!--emo&(.+?)-->.+?<!--endemo-->#", "\\1" , $txt );				//-----------------------------------------		// Clean up nbsp		//-----------------------------------------				$txt = str_replace( '&nbsp;&nbsp;&nbsp;&nbsp;', "\t", $txt );		$txt = str_replace( '&nbsp;&nbsp;'            , "  ", $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( "&#153;", "(tm)", $txt );		}				//-----------------------------------------		// Parse html		//-----------------------------------------				if ( $this->parse_html )		{			$txt = str_replace( "&#39;", "'", $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 &quot;		//-----------------------------------------				$style = str_replace( '&quot;', '', $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 + -
显示快捷键?