fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
PHP:
<?php
//stellt den php code farbig dar
function SyntaxHighlight($text) {
$code = highlight_string( $text, true );
$code = str_replace('<font color="#FF9900">', '<span class="comment">', $code);
$code = str_replace('<font color="#0000CC">', '<span class="default">', $code);
$code = str_replace('<font color="#000000">', '<span class="html">', $code);
$code = str_replace('<font color="#006600">', '<span class="keyword">', $code);
$code = str_replace('<font color="#CC0000">', '<span class="string">', $code);
$code = str_replace('</font>', '</span>', $code);
//die links zum php-handbuch erstellen
$code = preg_replace( '{([\w]+)(\s*</span><span\s+class="keyword">|)(\s*\()}',
'<a class="keyword_link" title="PHP Handbuch zu öffnen" href="http://www.php.net/"></a>', $code );
$arrHTML = explode( "<br />", $code );
$count = count( $arrHTML );
//html anfang
$html .= "<div class=\"php\">";
$html .= "<div class=\"zeilen\">\n";
//zeilennummern einsetzen
for( $i = 1; $i <= $count; $i++ ) {
$html .= $i."<br />\n";
}
$html .= "</div><div class=\"code\">\n";
//code lines...
foreach( $arrHTML as $line ) {
$html .= $line."<br />\n";
}
//html ende
$html .= "</div></div>\n";
return $html;
}
// Prüft die Linklänge und passt sie gegebenenfalls an
function linkLenght($treffer) {
// $treffer[1] ist die URL
$url = trim($treffer[1]);
// $treffer[2] ist der Ausgabename
// wurde kein Name angegeben, wird die URL als Name gewählt
if(strlen(trim($treffer[2]))!=0) {
$linkname = $treffer[2];
}
else {
$linkname = $treffer[1];
}
// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') AND !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}
// Rückgabelink
$ergebnis = "<a href=\"".$url."\">".$linkname."</a>";
return $ergebnis;
}
function no_spam($mail) {
$str = "";
$a = unpack("C*", $mail[1]);
foreach ($a as $b)
$str .= sprintf("%%%X", $b);
$mail[1] = str_replace(".", " dot ", $mail[1]);
$link = str_replace("@", " bei ", $mail[1]);
return "<a href=\"mailto:".$str."\">".$link."</a>";
}
function parseVar($treffer) {
// $treffer[1] ist die Variable zwischen den [var]-Tags
$str = $treffer[1];
// Klammer in grün hervorheben
$str = str_replace("[", "<span style=\"color:#007700\">[</span>", $str);
$str = str_replace("]", "<span style=\"color:#007700\">]</span>", $str);
// alles was zwischen single quotes ( ') steht rot hervorheben
$str = preg_replace("/('.*')/Uis", "<span style=\"color:#DD0000\"></span>", $str);
// den Rest blau hervorheben
$str = "<span style=\"color:#0000BB\">".$str."</span>";
return $str;
}
function bbcodes ($text) {
//konfiguration
//php-code
$php = array();
$der_code = array();
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU", $text, $php);
// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[code\](.*)\[\/code\]/siU", $text, $der_code);
foreach($php[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('#'.preg_quote($value, '#').'#','[php]'.$key.'[ /php]',$text,1);
// Code highlighten
$php[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
foreach($der_code[0] as $key => $value){
// Im Text durch eine Variable ersetzen, um diese dann später wiederum durch den Code zu ersetzen
$text=preg_replace('~'.preg_quote($value, '~').'~','[code]'.$key.'[/code]',$text,1);
// Code highlighten
$der_code[1][$key] = SyntaxHighlight($php[1][$key], TRUE);
}
// Wörter mit mehr als 60 Zeichen werden ab dem 60. Zeichen um ein Leerzeichen ergänzt
// damit der Browser den Text umbrechen kann (, sonst wird das Layout zerstört)
$max_word_lenght = 60;
// Die Länge von Links ist größer, da sie nur im Quelltext als 'lang' erscheinen
// Links werden später noch gesondert behandelt
$max_link_lenght = 200;
// Trennzeichen
$splitter = " ";
// Text in Zeilen aufteilen, sonst würden Zeilenumbrüche (\n) nicht als Worttrennung erkannt
$lines = explode("\n", $text);
//links kürzen
foreach($lines as $key_line => $line) {
// jede Zeile in Wörter aufteilen
$words = explode(" ",$line);
// jedes Wort prüfen
foreach($words as $key_word => $word) {
// für Links wird die maximale Länge erhöht
if(substr(strtolower($word), 0, 7)== 'http://' OR substr(strtolower($word), 0, 8)== 'https://' OR substr(strtolower($word), 0, 4)=='www.') {
$max_lenght = $max_link_lenght;
}
else {
$max_lenght = $max_word_lenght;
}
$word = trim($word);
// BB-Code Tags entfernen, da sie nicht zur Buchstabenlänge eines Wortes zählen
$word = preg_replace("/\[(.*)\]/Usi", "", $word);
if(strlen($word)>$max_lenght) {
// Trennen des Wortes nach max_length Buchstaben
$words[$key_word] = chunk_split($words[$key_word], $max_lenght, $splitter);
// abziehen der Länge des Trennzeichens, dieses wird am Ende automatisch
// noch einmal eingefügt
$length = strlen($words[$key_word])-strlen($splitter);
$words[$key_word] = substr($words[$key_word],0,$length);
}
}
// fügt die veränderten Wörter wieder zur Zeile als String zusammen
$lines[$key_line] = implode(" ", $words);
}
// fügt Zeilen wieder zum gesamten Text als String zusammen
$text = implode("\n", $lines);
//text formatieren darstellen
$text = preg_replace("/\[b\](.*)\[\/b\]/Usi", "<span style=\"font-weight: bold;\">\1</span>", $text);
$text = preg_replace("/\[i\](.*)\[\/i\]/Usi", "<span style=\"font-style: italic;\">\1</span>", $text);
$text = preg_replace("/\[u\](.*)\[\/u\]/Usi", "<span style=\"text-decoration: underline;\">\1</span>", $text);
$text = preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi", "<span style=\"color:\1\">\2</span>", $text);
$text = preg_replace("/\[umfluss=(.*)\](.*)\[\/umfluss\]/Usi", "<span class=\"\1\">\2</span>", $text);
$text = preg_replace("/\[video\](.*)\[\/video\]/Usi", "<object type=\"application/x-shockwave-flash\" style=\"width:250px; height:205px\" data=\"\1\"><param name=\"movie\" value=\"\1\" /></object>", $text);
$text = preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi", "<img src=\"\" alt=\"\" />", $text);
$text = preg_replace("/\[img](.*)\[\/img\]/Usi", "<img src=\"\1\" alt=\"nicht bennantes bild\" />", $text);
$text = preg_replace("/\[h1\](.*?)\[\/h1\]/si", "<h1>\1</h1>", $text);
$text = preg_replace("/\[h2\](.*?)\[\/h1\]/si", "<h2>\1</h2>", $text);
//php-variablen hervorheben
$text = preg_replace_callback("/\[var\](.*)\[\/var\]/Usi", 'parseVar', $text);
//email
$text = preg_replace_callback('"([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6})"si', 'no_spam', $text);
//url-umwandlung
$text = preg_replace_callback("/\[url=(.*)\](.*)\[\/url\]/Usi", 'linkLenght', $text);
$text = preg_replace_callback('#(( |^)(((ftp|http|https|)://)|www.)\S+)#mi', 'linkLenght', $text);
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
$width = 420;
while(preg_match('/\[quote\](.*)\[\/quote\]/Uis', $text)) {
$width -= 10;
$quote_start = "<div class=\"zitat\" style=\"width:".$width."px\">";
$quote_end = "</div>";
$text = preg_replace("/\[quote](.*)\[\/quote\]/Uis", $quote_start."\1".$quote_end, $text);
}
//die smilies einbinden
$smilie_pfad = "images/smilies/";
$smilies = array(
':D' => array('biggrin.gif', '*grins*'),
':)' => array('biggrin.gif', '*grins*'),
':-D' => array('biggrin.gif', '*grins*'),
'0:-)' => array('angel.gif', 'engel'),
);
foreach ($smilies as $find => $replace) {
list($img, $title) = $replace;
$replace = '<img src="'.$smilie_pfad.''.$img.'" alt="'
.$find.'" title="'.$title.'"/>';
$text = str_replace($find, $replace, $text);
}
//aus umbrüchen <br> machen
$text = nl2br($text);
//PHP Code wieder einfügen
foreach($php[1] as $key => $value) {
$text = preg_replace("/\[php\]".$key."\[\/php\]/siU", $value, $text);
}
foreach($der_code[1] as $key => $value) {
$text = preg_replace("/\[code\]".$key."\[\/code\]/siU", $value, $text);
}
return $text;
}
|