bibformat =& $ref; $this->format = $output; } /** * Format for HTML or RTF/plain? * * @author Mark Grimshaw * @version 1 * * @param $data Input string * @param $patterns Optional preg pattern (usually used to highlight a search phrase) * @param $class Option CSS class for highlighting a search phrase */ function format($data) { if($this->format == 'html') { /** * Scan for search patterns and highlight accordingly */ /** * Temporarily replace any URL - works for just one URL in the output string. */ if(preg_match("/(.*<\/a>)/i", $data, $match)) { $url = preg_quote($match[1], '/'); $data = preg_replace("/$url/", "OSBIB__URL__OSBIB", $data); } else $url = FALSE; $data = str_replace("\"", """, $data); $data = str_replace("<", "<", $data); $data = str_replace(">", ">", $data); $data = preg_replace("/&(?![a-zA-Z0-9#]+?;)/", "&", $data); $data = $this->bibformat->patterns ? preg_replace($this->bibformat->patterns, "bibformat->patternHighlight . "\">$1", $data) : $data; $data = preg_replace("/\[b\](.*?)\[\/b\]/is", "$1", $data); $data = preg_replace("/\[i\](.*?)\[\/i\]/is", "$1", $data); $data = preg_replace("/\[sup\](.*?)\[\/sup\]/is", "$1", $data); $data = preg_replace("/\[u\](.*?)\[\/u\]/is", "$1", $data); // Recover any URL if($url) $data = str_replace("OSBIB__URL__OSBIB", $match[1], $data); } else if($this->format == 'rtf') { $data = preg_replace("/&#(.*?);/", "\\u$1", $data); $data = preg_replace("/\[b\](.*?)\[\/b\]/is", "{{\\b $1}}", $data); $data = preg_replace("/\[i\](.*?)\[\/i\]/is", "{{\\i $1}}", $data); $data = preg_replace("/\[u\](.*?)\[\/u\]/is", "{{\\ul $1}}", $data); // Need to figure this one out for RTF $data = preg_replace("/\[sup\](.*?)\[\/sup\]/is", "$1", $data); } /** * OpenOffice-1.x. */ else if($this->format == 'sxw') { $data = $this->bibformat->utf8->decodeUtf8($data); $data = str_replace("\"", """, $data); $data = str_replace("<", "<", $data); $data = str_replace(">", ">", $data); $data = preg_replace("/&(?![a-zA-Z0-9#]+?;)/", "&", $data); $data = preg_replace("/\[b\](.*?)\[\/b\]/is", "$1", $data); $data = preg_replace("/\[i\](.*?)\[\/i\]/is", "$1", $data); $data = preg_replace("/\[sup\](.*?)\[\/sup\]/is", "$1", $data); $data = preg_replace("/\[u\](.*?)\[\/u\]/is", "$1", $data); $data = "".$data."\n"; } /** * StripBBCode for plain. */ else $data = preg_replace("/\[.*\]|\[\/.*\]/U", "", $data); return $data; } } ?>