Logo - MyWebsolution.de
User gesamt  :  2308280
User online  :  3
KubaSeoTräume, PHP Forum, PHP Community and more ... MyWebsolution.de!
   
   
 
Registrieren Login User F.A.Q Suche Home

eingeloggt bleiben

MyWebsolution.de Foren » Tutorials » bbcodes tutorial

Seite: <  1 2 3 4  > Posts pro Seite: 5 10 20
Autor Thread
30.01.2007 20:43 Uhr
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($linkname045-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$texttrue );
    
$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($linkname045-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("/(&#039;.*&#039;)/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), 07)== 'http://' OR substr(strtolower($word), 08)== 'https://' OR substr(strtolower($word), 04)=='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.
Profil ansehen
30.01.2007 23:01 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
editier mal deinen Beitrag, ich weiß nicht, was du mit
Zitat:
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

meinst.

Dieser Code
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($linkname045-3)."...".substr($linkname, -5);
        }
?>

bezieht sich nur auf Bilder, die als Links erzeugt werden, z.B.



"Normale"-Bild-URLs werden nur dann nicht gekürzt, wenn sie mit http:// , https:// oder www. beginnen und zwar in diesen Zeilen:

PHP:
<?php
// für Links wird die maximale Länge erhöht
            
if(substr(strtolower($word), 07)== 'http://' OR substr(strtolower($word), 08)== 'https://' OR substr(strtolower($word), 04)=='www.') {
                
$max_lenght $max_link_lenght;
            }

            else {
                
$max_lenght $max_word_lenght;
            }
?>


Wozu willst du Alt-Attribute definieren lassen? also ich erkenne darin keinen Nutzen für den Anwender..


Profil ansehen Mail senden
31.01.2007 12:04 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
also ich möchte alt-beschreibungstext benutzen. der nutzen ist eine barrierefreie und xhtml valide seite, die ich auch mit dem einsatz von bbcodes erhalten möchte. (ich benutze die bbcodes nicht nur als möglichkeit für benutzer, kommentare zu hinterlassen, sondern auch für meinen eigenen inhalt.)

(barrierefreiheit meint auch, dass blinde (bekanntester verteter: GOOGLE BOTS) oder anderweitig gehandicapte benutzer den inhalt besser erfassen können und nicht ausgeschlossen werden)

Dieser Beitrag wurde am 31.01.2007 um 12:07:47 Uhr von fish zum 1. Mal editiert.
Profil ansehen
31.01.2007 21:27 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
ohne Prüfung geht es so:

PHP:
<?php
$text 
preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi""<img src=\"\1\" alt=\"\2\" />"$text);
?>


Für ne Prüfung wegen der Bildgröße müsste man die Callbackfunktion anpassen, aber kann sein, dass du das nich brauchst.


Profil ansehen Mail senden
31.01.2007 22:37 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
so hatte ich es auch... als ich text eingegeben habe die bildurl vom kürzungsdingens abgeschnitten worden.. warum? muss ich das irgendwie modifizieren?
Profil ansehen
31.01.2007 23:25 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Bei mir funktioniert es ohne probleme, poste mal das Beispiel, das du zum Testen verwendest.

Es kann eigentlich nur dann ein Problem auftreten, wenn im Alternativtext eines der Wörter länger als 60 Zeichen ist


Profil ansehen Mail senden
01.02.2007 09:39 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
hmm weiss nicht also das macht probleme :[_url=http://www.fish.bierquartier.de/images/news/t610.jpg]das sonyericsson t610 - mein super mega tolles "neues" handy[/url]
ausgabe: <a href="http://www.fish.bierquartier.de/images/news/t610. jpg"><img src="http://www.fish.bierquartier.de/...y" /></a>
Profil ansehen
01.02.2007 17:02 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Funktioniert bei mir.

Poste nochmal deine bisherige Funktion


Profil ansehen Mail senden
01.02.2007 19:31 Uhr
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$texttrue );
    
$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($linkname045-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("/(&#039;.*&#039;)/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), 07)== 'http://' OR substr(strtolower($word), 08)== 'https://' OR substr(strtolower($word), 04)=='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;
}
Profil ansehen
01.02.2007 20:40 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
ah, jetzt hab ichs

du musst die URL Umwandlung vor der Bildumwandlung machen, denn bei der URL Umwandlung prüfst du ja, ob dort ein [/IMG] enthalten ist. Wenn du die Bilder aber schon vorher umgewandelt hast, steht dort gar kein [IMG] mehr, sondern schon der richtige HTML Quellcode, also <img src="" ... />


Profil ansehen Mail senden
Seite: <  1 2 3 4  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik