fish
|
Forenuser
|
|
registriert
|
08.01.2007
|
wohnt in
|
de/wü
|
Beiträge
|
20
|
|
hmm da habe ich doch noch ein problem.. also. ich möchte gerne meine bilder via ein. leider wird dabei die url gekürzt, obwogl ich PHP:
<?// legt eine maximale Länge von 50 Zeichen fest
// Ausnahme bei [img]-Tags
if(strlen($linkname)>50 AND !substr_count(strtolower($linkname), '[img]') OR !substr_count(strtolower($linkname), '[img=') OR !substr_count(strtolower($linkname), '[/img]')) {
$linkname = substr($linkname, 0, 45-3)."...".substr($linkname, -5);
}?>
eingegeben habe. hier nochmal mein ganzer bbcode: 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]') OR !substr_count(strtolower($linkname), '[img=') OR !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=\"\1\" alt=\"\2\" />", $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'),
'08-D' => array('angel.gif', 'engel'),
':angel:' => array('angel.gif', 'engel'),
':-H' => array('angry.gif', '*verärgert*'),
':H' => array('angry.gif', '*verärgert*'),
':-@' => array('angry.gif', '*verärgert*'),
':angry:' => array('angry.gif', '*verärgert*'),
':-]' => array('approve.gif', '*zustimmung*'),
':]' => array('approve.gif', '*zustimmung*'),
':approve:' => array('approve.gif', '*zustimmung*'),
':argh:' => array('arg.gif', '*argh*'),
':artist:' => array('artist.gif', 'kuenstler'),
':asian:' => array('asian.gif', 'asiate'),
':baby:' => array('baby.gif', 'baby'),
':bandit:' => array('bandit.gif', 'bandit'),
'*_o' => array('blackeye.gif', 'black eye'),
'o_+' => array('blackeye.gif', 'black eye'),
'+_o' => array('blackeye.gif', 'black eye'),
'o_*' => array('blackeye.gif', 'black eye'),
':blackeye:' => array('blackeye.gif', 'black eye'),
'+_o' => array('blackeye.gif', 'black eye'),
':bunny:' => array('bunny.gif', 'bunny'),
':chinese:' => array('chinese.gif', 'chinese'),
':classic:' => array('classic.gif', '*smile*'),
'+_+' => array('clown.gif', 'clown'),
':clown:' => array('clown.gif', 'clown'),
'?(' => array('confused.gif', 'verwirrt'),
':confused:' => array('confused.gif', 'verwirrt'),
'8-)' => array('cool.gif', '*cool*'),
'8-D' => array('cool.gif', '*cool*'),
'8)' => array('cool.gif', '*cool*'),
'8D' => array('cool.gif', '*cool*'),
':cool:' => array('cool.gif', '*cool*'),
':\'(' => array('cry.gif', '*schnief*'),
':cry:' => array('cry.gif', '*schnief*'),
':dead:' => array('dead.gif', 'tot'),
':I' => array('devious.gif', 'böse'),
':i' => array('devious.gif', 'böse'),
':boese:' => array('devious.gif', 'böse'),
'/-(' => array('disappointed.gif', 'enttäuscht'),
':disappointed:' => array('disappointed.gif', 'enttäuscht'),
':augendreh:' => array('dizzy.gif', '*augendreh*'),
':dude:' => array('dude.gif', 'dude'),
':-o' => array('eek.gif', '*o*'),
':-0' => array('eek.gif', '*o*'),
':-O' => array('eek.gif', '*o*'),
':O' => array('eek.gif', '*o*'),
':0' => array('eek.gif', '*o*'),
':evil:' => array('evil.gif', '*böse*'),
':gangsta:' => array('gangsta.gif', 'gangsta'),
'$-)' => array('greedy.gif', '$$$$$'),
'$_$' => array('greedy.gif', '$$$$$'),
':$$$:' => array('greedy.gif', '$$$$$'),
':-*' => array('kiss.gif', '*kuss*'),
':kiss:' => array('kiss.gif', '*kuss*'),
':~/' => array('knocked-out.gif', '*knocked-out*'),
':knocked-out:' => array('knocked-out.gif', '*knocked-out*'),
'LOL' => array('lol.gif', 'LOL'),
':lol:' => array('lol.gif', 'LOL'),
':schiel:' => array('lurk.gif', '*schiel*'),
':oger:' => array('oger.gif', 'oger'),
':altermann:' => array('oldman.gif', 'alter mann'),
':besserweis:' => array('redface.gif', '*besserwiss*'),
'z-(' => array('pirate.gif', 'pirat'),
':roboter:' => array('robot.gif', 'robot'),
':rolleyes:' => array('rolleyes.gif', '*augenroll*'),
':-(' => array('sad.gif', '*traurig*'),
':(' => array('sad.gif', '*traurig*'),
':schaem:' => array('shame.gif', '*schäm*'),
':-p' => array('tongue.gif', '*zungeraus*'),
';-p' => array('tongue.gif', '*zungeraus*'),
':-P' => array('tongue.gif', '*zungeraus*'),
';-P' => array('tongue.gif', '*zungeraus*'),
':-S' => array('sick.gif', '*krank*'),
':S' => array('sick.gif', '*krank*'),
':krank:' => array('sick.gif', '*krank*'),
':-Z' => array('sleeping.gif', '*schlaf*'),
':-z' => array('sleeping.gif', '*schlaf*'),
':schlaf:' => array('sleeping.gif', '*schlaf*'),
':smart:' => array('smart.gif', '*smart*'),
'o_o' => array('square-eyed.gif', 'viereckige augen'),
';-)' => array('wink.gif', '*zwinker*'),
';)' => array('wink.gif', '*zwinker*'),
':zwinker:' => array('wink.gif', '*zwinker*'),
':-|' => array('worried.gif', '*besorgt*'),
':|' => array('worried.gif', '*besorgt*'),
':-X' => array('x-face.gif', '*nixsag*'),
':nixsag:' => array('x-face.gif', '*nixsag*')
);
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;
}
Dieser Beitrag wurde am 30.01.2007 um 20:44:58 Uhr von fish zum 1. Mal editiert.
|