<?php /* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ include_once($UTIL_DIR . "/convert.php"); include_once($UTIL_DIR . "/smileys.php"); // // preg_replace // strtr // ereg_replace // str_replace // error_reporting // function parse($input, $indent = "") { global $testing; // Remove all tags from input (convert to xml) $output = convert_xml($input); // Replace newlines with '\n' and indent code. $nls = array("\n\r", "\n\c", "\n"); $nls = str_replace($nls, "\n" . $indent, $indent . $output); $output = $nls; // Put in the smileys global $smileys; foreach($smileys as $smiley) { $smile = $smiley[0]; $smile = str_replace($smile, "<img alt=\"\" src=\"gfx/smileys/" . $smiley[1] . "\"></img>", $output); $output = $smile; } // Find a unique symbols for image start and end markers $imgstartsymbol = "A"; $imgstartmarker = $imgstartsymbol; while(strpos($output, $imgstartmarker)) $imgstartmarker .= $imgstartsymbol; $imgendsymbol = "B"; $imgendmarker = $imgendsymbol; while(strpos($output, $imgendmarker)) $imgendmarker .= $imgendsymbol; // Find and mark image URLs (so that they don't get converted into normal <a/> links) $output = preg_replace("/http:\/\/(.*?\.jpg|.*?\.gif|.*?\.png|.*?\.jpeg)/", $imgstartmarker."$1".$imgendmarker, $output); // Replace URLs with <a></a> tags $output = preg_replace("/http:\/\/(.*?)([\n ])/s", "<a href=\"http://$1\">$1</a>$2", $output); // Convert marked images to img tags and links $output = preg_replace("/".$imgstartmarker."(.*?)".$imgendmarker."/s", "<a href=\"http://$1\"><img alt=\"$1\" src=\"?mode=imagecache&uri=http://$1\"/></a>", $output); // Replace URLs with <a></a> tags $output = preg_replace("/\{\{([0-9]*?)\}\}/s", "<a href=\"?mode=file&fid=$1\"><img src=\"?mode=file&preview=1&fid=$1\"/></a>", $output); // Replace [quote title=...]...[/quote] $urls = ""; while(($start = strpos($output, "[quote"))) { $pre = substr($output, 0, $start); $url = substr($output, $start); $end = strpos($url, "[/quote]") + strlen("[/quote]"); $url = substr($url, 0, $end - strlen("[/quote]")); $post = substr($output, $start + $end + strlen("[/quote]") ); $header = substr($url, 0, strpos($url, "]") + 1); $body = substr($url, strpos($url, "]") + 1); $header = str_replace(array("title"), "", $header); $header = str_replace(array("="), "<div class=\"title\">", $header); $header = str_replace(array("[quote"), "<div class=\"quote\">", $header); $header = str_replace(array("]"), " </div>", $header); $urls .= $pre . $header . $body . "</div>"; $output = $post; } $urls .= $output; $output = $urls; // // Hack to make quotes two levels deep. // // Replace [quote title=...]...[/quote] $urls = ""; while(($start = strpos($output, "[quote"))) { $pre = substr($output, 0, $start); $url = substr($output, $start); $end = strpos($url, "[/quote]") + strlen("[/quote]"); $url = substr($url, 0, $end - strlen("[/quote]")); $post = substr($output, $start + $end + strlen("[/quote]") ); $header = substr($url, 0, strpos($url, "]") + 1); $body = substr($url, strpos($url, "]") + 1); $header = str_replace(array("title"), "", $header); $header = str_replace(array("="), "<div class=\"title\">", $header); $header = str_replace(array("[quote"), "<div class=\"quote\">", $header); $header = str_replace(array("]"), " </div>", $header); $urls .= $pre . $header . $body . "</div>"; $output = $post; } $urls .= $output; $output = $urls; $search = array('/\[b\](.*?)\[\/b\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[u\](.*?)\[\/u\]/is'); $replace = array('<strong>$1</strong>', '<em>$1</em>', '<u>$1</u>'); $output = preg_replace ($search, $replace, $output); // Replace newlines with <br/> tags $nls = array("\n"); $nls = str_replace($nls, "<br/>\n", $output); $output = $nls; return $output; } ?>