HEX
Server: Apache
System: Linux www3.pit.tblive.com 5.14.0-687.38.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Aug 12 17:19:12 EDT 2026 x86_64
User: awaldron (1020)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/awaldron/www/archive/demo/functions/_content.php
<?php

function format_body($body,$stripslashes=1) {

	if ($stripslashes) $body = stripslashes($body);
	$body = format_body_first_pass($body);
	
	// handle codeblocks
	$code_tags = TRUE;
	while ($code_tags) {
		$parsed_str = $orig_str = find_innermost("[code]","[/code]",$body);
		if ($orig_str === FALSE) $code_tags = FALSE;
		else {
			$parsed_str = str_replace("<br>","..break..",$parsed_str);
			$parsed_str = str_replace(" ","..space..",$parsed_str);
			$parsed_str = str_replace("[code]\n","[code]",$parsed_str);
			$parsed_str = str_replace("\n[/code]","[/code]",$parsed_str);
			$parsed_str = htmlspecialchars($parsed_str,ENT_QUOTES);
			$incode = $parsed_str2 = substr($parsed_str,6,-7);
			$parsed_str2 = str_replace("[","&#91;",$parsed_str2);
			$parsed_str2 = str_replace("]","&#93;",$parsed_str2);
			$parsed_str2 = str_replace("\\","&#92;",$parsed_str2);
			$parsed_str = str_replace($incode,$parsed_str2,$parsed_str);
			$parsed_str = preg_replace("/\[code\](.*?)\[\/code\]/si", "<center><div id=\"code\" style=\"width:90%;font:10px Courier;text-align:left;\">\\1</div></center>", $parsed_str);
			$parsed_str = str_replace("..break..","<br>",$parsed_str);
			$parsed_str = str_replace("..space..","&nbsp;",$parsed_str);
			$body = str_replace($orig_str,$parsed_str,$body);
		}
	}
	
	// Change backslashes to forward slashes
	//$body = str_replace("\\","/",$body);
	
	// handle quotes
	$quote_tags = TRUE;
	while ($quote_tags) {
		$parsed_str = $orig_str = find_innermost("[quote","[/quote]",$body);
		if ($orig_str === FALSE) $quote_tags = FALSE;
		else {
			$parsed_str = str_replace("[quote]\n<br>","[quote]\n",$parsed_str);
			$parsed_str = str_replace("\n<br>[/quote]","[/quote]\n",$parsed_str);
			$parsed_str = preg_replace("/\[quote\](.*?)\[\/quote\]/si", "<center><div style=\"width:90%;text-align:left;\"><b>Quote:</b><br><div id=\"quote\">\\1</div></div></center>", $parsed_str); 
			$parsed_str = preg_replace("/\[quote=(.*?)\](.*?)\[\/quote\]/si", "<center><div style=\"width:90%;text-align:left;\"><b>\\1 wrote:</b><br><div id=\"quote\">\\2</div></div></center>", $parsed_str); 
			$body = str_replace($orig_str,$parsed_str,$body);
		}
	}
	
	// handle numbered lists
	$nl_tags = TRUE;
	while ($nl_tags) {
		$parsed_str = $orig_str = find_innermost("[nl]","[/nl]",$body);
		if ($orig_str === FALSE) $nl_tags = FALSE;
		else {
			$parsed_str = str_replace("C++","C&#43;&#43;",$parsed_str);
			$parsed_str = str_replace("<br>+","+",$parsed_str);
			$parsed_str = str_replace("+","<li>",$parsed_str);
			$parsed_str = str_replace("[nl]","<ol>",$parsed_str);
			$parsed_str = str_replace("[/nl]","</ol>",$parsed_str);
			$body = str_replace($orig_str,$parsed_str,$body);
		}
	}
	
	// handle bulleted lists
	$bl_tags = TRUE;
	while ($bl_tags) {
		$parsed_str = $orig_str = find_innermost("[bl]","[/bl]",$body);
		if ($orig_str === FALSE) $bl_tags = FALSE;
		else {
			$parsed_str = str_replace("C++","C&#43;&#43;",$parsed_str);
			$parsed_str = str_replace("<br>+","+",$parsed_str);
			$parsed_str = str_replace("+","<li>",$parsed_str);
			$parsed_str = str_replace("[bl]","<ul>",$parsed_str);
			$parsed_str = str_replace("[/bl]","</ul>",$parsed_str);
			$body = str_replace($orig_str,$parsed_str,$body);
		}
	}
	
	// extract and parse tables
	$tctr = 0;
	$tables = TRUE;
	while ($tables) {
		$parsed_str = $orig_str = find_innermost("<table","</table>",$body);
		if ($orig_str === FALSE) $tables = FALSE;
		else {
			$parsed_str = preg_replace("/\n<br>\s*<table/si","\n<table",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<tr/si","\n<tr",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<th/si","\n<th",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<td/si","\n<td",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<\/table/si","\n</table",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<\/tr/si","\n</tr",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<\/th/si","\n</th",$parsed_str);
			$parsed_str = preg_replace("/\n<br>\s*<\/td/si","\n</td",$parsed_str);
			$tbl[$tctr] = $parsed_str;
			$body = str_replace($orig_str,"|-|TABLE".$tctr."|-|",$body);
			$tctr++;
		}
	}
	// Re-insert tables
	for ($i=(count($tbl)-1); $i >= 0; $i--) {
		$body = str_replace("|-|TABLE".$i."|-|",$tbl[$i],$body);
	}
	
	return $body;
}

function find_innermost($s_tag,$e_tag,$str) {

	// Find first occurance of END TAG
	$e_tag_pos = strpos($str,$e_tag) + strlen($e_tag);
	if ($e_tag_pos === FALSE) return FALSE;
	
	// Cut off everything after END TAG position
	$str = substr($str,0,$e_tag_pos);
	
	// Find last occurance of START TAG
	$s_tag_pos = strrpos_fix($str,$s_tag);
	if ($s_tag_pos === FALSE) return FALSE;
	
	// Cut off everything prior to START TAG position
	$str = substr($str,$s_tag_pos);
	
	return $str;
}

function strrpos_fix($haystack,$needle) {
	if (strpos($haystack,$needle) === FALSE) return FALSE;
	while($ret = strrpos($haystack,$needle)) {      
		if (strncmp(substr($haystack,$ret,strlen($needle)),$needle,strlen($needle)) == 0 ) return $ret;
		$haystack = substr($haystack,0,$ret -1 );
	}
	return $ret;
}


function format_body_first_pass($body) {
	$domain = DOMAIN;
	

	
	// Replace old [li] tags
	$body = eregi_replace("\[li\]","<li>",$body);
	$body = eregi_replace("\[/li\]","",$body);
	
	// Replace simple formatting
	$body = eregi_replace("\[b\]","<b>",$body);
	$body = eregi_replace("\[/b\]","</b>",$body);
	$body = eregi_replace("\[u\]","<u>",$body);
	$body = eregi_replace("\[/u\]","</u>",$body);	
	$body = eregi_replace("\[i\]","<i>",$body);
	$body = eregi_replace("\[/i\]","</i>",$body);
	$body = eregi_replace("\[center\]","<center>",$body);
	$body = eregi_replace("\[/center\]","</center>",$body);
	
	// Replace Smilies
	$body = str_replace(":biggrin:","<img src=\"/gui/smiles/icon_biggrin.gif\">",$body);
	$body = str_replace(":smile:","<img src=\"/gui/smiles/icon_smile.gif\">",$body);
	$body = str_replace(":sad:","<img src=\"/gui/smiles/icon_sad.gif\">",$body);
	$body = str_replace(":surprised:","<img src=\"/gui/smiles/icon_surprised.gif\">",$body);
	$body = str_replace(":shock:","<img src=\"/gui/smiles/icon_eek.gif\">",$body);
	$body = str_replace(":confused:","<img src=\"/gui/smiles/icon_confused.gif\">",$body);
	$body = str_replace(":shades:","<img src=\"/gui/smiles/icon_cool.gif\">",$body);
	$body = str_replace(":lol:","<img src=\"/gui/smiles/icon_lol.gif\">",$body);
	$body = str_replace(":mad:","<img src=\"/gui/smiles/icon_mad.gif\">",$body);
	$body = str_replace(":razz:","<img src=\"/gui/smiles/icon_razz.gif\">",$body);
	$body = str_replace(":oops:","<img src=\"/gui/smiles/icon_redface.gif\">",$body);
	$body = str_replace(":cry:","<img src=\"/gui/smiles/icon_cry.gif\">",$body);
	$body = str_replace(":evil:","<img src=\"/gui/smiles/icon_evil.gif\">",$body);
	$body = str_replace(":twisted:","<img src=\"/gui/smiles/icon_twisted.gif\">",$body);
	$body = str_replace(":roll:","<img src=\"/gui/smiles/icon_rolleyes.gif\">",$body);
	$body = str_replace(":wink:","<img src=\"/gui/smiles/icon_wink.gif\">",$body);
	$body = str_replace(":exclaim:","<img src=\"/gui/smiles/icon_exclaim.gif\">",$body);
	$body = str_replace(":question:","<img src=\"/gui/smiles/icon_question.gif\">",$body);
	$body = str_replace(":idea:","<img src=\"/gui/smiles/icon_idea.gif\">",$body);
	$body = str_replace(":arrow:","<img src=\"/gui/smiles/icon_arrow.gif\">",$body);
	
	// Replace Font Colors
	$body = str_replace("[color=red]","<span style=\"color:#FF0000\">",$body);
	$body = str_replace("[color=darkred]","<span style=\"color:#8B0000\">",$body);
	$body = str_replace("[color=orange]","<span style=\"color:#FF8000\">",$body);
	$body = str_replace("[color=brown]","<span style=\"color:#643505\">",$body);
	$body = str_replace("[color=green]","<span style=\"color:#009900\">",$body);
	$body = str_replace("[color=olive]","<span style=\"color:#808000\">",$body);
	$body = str_replace("[color=blue]","<span style=\"color:#0000FF\">",$body);
	$body = str_replace("[color=darkblue]","<span style=\"color:#".COLOR_TBAR."\">",$body);
	$body = str_replace("[color=indigo]","<span style=\"color:#4B0082\">",$body);
	$body = str_replace("[color=violet]","<span style=\"color:#EE82EE\">",$body);
	$body = str_replace("[color=black]","<span style=\"color:#000000\">",$body);
	$body = str_replace("[color=white]","<span style=\"color:#FFFFFF\">",$body);
	$body = preg_replace("/\[color=(.*?)\]/si", "<span style=\"color:\\1\">", $body);
	$body = str_replace("[/color]","</span>",$body);
	
	// Replace Font Sizes
	$body = preg_replace("/\[size=(.*?)\]/si", "<span style=\"font-size:\\1px\">", $body);
	$body = str_replace("[/size]","</span>",$body);
	
	// Do no allow scripts     	
	$body = preg_replace("/<script(.*?)<\/script>/si", "", $body); 
	
	// Replace Images
	$body = preg_replace("/\[img\](.*?)\[\/img\]/si", "<img src=\"\\1\" border=\"0\">", $body); 
	$body = preg_replace("/\[img=r\](.*?)\[\/img\]/si", "<img src=\"\\1\" border=\"0\" align=\"right\" style=\"margin-left:8px;margin-bottom:5px;\">", $body); 
	$body = preg_replace("/\[img=l\](.*?)\[\/img\]/si", "<img src=\"\\1\" border=\"0\" align=\"left\" style=\"margin-right:8px;margin-bottom:5px;\">", $body); 
	
	// Any email address : No New Target
	$body = preg_replace("/\[url\]([^\[]*?)@([^\[]*?)\[\/url\]/si", "<a href=\"mailto:\\1@\\2\">\\1@\\2</a>", $body);
	// Any email address (that user has specified as so) : No New Target
	$body = eregi_replace("\\[url=mailto:([^\\[]*)\]([^\\[]*)\\[/url\\]","<a href=\"mailto:\\1\">\\2</a>",$body);
	// An Email Address with different text : No New Target
	$body = eregi_replace("\\[url=([^\\[]*)@([^\\[]*)\]([^\\[]*)\\[/url\\]","<a href=\"mailto:\\1@\\2\">\\3</a>",$body);
	
	// Any file or document : New Target
	$body = preg_replace("/\[url\]([^\[]*?)(doc|dot|pdf|xls|xlt|ppt|txt)\[\/url\]/si", "<a href=\"\\1\\2\" target=\"new\">\\1\\2</a>", $body);
	$body = preg_replace("/\[url=([^\[]*)(doc|dot|pdf|xls|xlt|ppt|txt)\]([^\[]*)\[\/url\]/","<a href=\"\\1\\2\" target=\"new\">\\3</a>",$body);
	
	// Any Local URL : No New Target
	$body = preg_replace("/\[url\]\/([^\[]*?)\[\/url\]/si", "<a href=\"/\\1\">/\\1</a>", $body); 
	$body = preg_replace("/\[url=\/([^\]]*)\]([^\[]*)\[\/url\]/im","<a href=\"/\\1\">\\2</a>",$body);
	
	// Any .internal URL : No New Target
	$body = preg_replace("/\[url\]([^\[]*?)".$domain."([^@]*?)\[\/url\]/si", "<a href=\"\\1".$domain."\\2\">\\1".$domain."\\2</a>", $body); 
	$body = preg_replace("/\[url=([^\[]*)".$domain."([^\[]*)\]([^\[]*)\[\/url\]/si","<a href=\"\\1".$domain."\\2\">\\3</a>",$body);
	
	// Any Other URL : New Target
	$body = preg_replace("/\[url\]([^\[]*?)\[\/url\]/si", "<a href=\"\\1\" target=\"new\">\\1</a>", $body);
	$body = preg_replace("/\[url=([^\[]*)\]([^\[]*)\[\/url\]/si","<a href=\"\\1\" target=\"new\">\\2</a>",$body);

	// FILE Tag
	$body = preg_replace("/\[file\]([^\[]*?)\[\/file\]/si", "<a href=\"http://appserver.internal/\\1\" target=\"file\">http://appserver.internal/\\1</a>", $body);
	$body = preg_replace("/\[file=([^\[]*)\]([^\[]*)\[\/file\]/si","<a href=\"http://appserver.internal/\\1\" target=\"file\">\\2</a>",$body);

	// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
	// xxxx can only be alpha characters.
	// yyyy is anything up to the first space, newline, comma, double quote or <
	$body = preg_replace("#(^|[\n ])([\w]+?://[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $body);
	$body = preg_replace("#(^|[\n ])([\w]+?:\\\\[^ \"\n\r\t<]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $body);

	// Replace \n with breaks
	$body = str_replace("\n","\n<br>",$body);
	
	return $body;
}

?>