Logo - MyWebsolution.de
User gesamt  :  2308245
User online  :  1
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  > Posts pro Seite: 5 10 20
Autor Thread
25.01.2007 18:47 Uhr bbcodes tutorial
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
hallo. ich habe eine frage zu den bbcodes

ich habe dein tutoarial mal ausprobiert, allerdings funktioniert es nicht, mehrere php-codes in einer seite auszugeben. stattdessen erscheint:

PHP:
0

PHP:
1

<?php trim($_variable);?>

woher kommt das?

wie kann ich zeilen anzeigen lassen?
Profil ansehen
25.01.2007 20:55 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
die rückersetzung hast du drin?

PHP:
<?php
//PHP Code wieder einfügen
foreach($php[1] as $key => $value)
    
$text preg_replace("/\[php\]".$key."\[\/php\]/siU"$value$text);
?>


?

Ich verwende den Code aus dem Tutorial nämlich so ziemlich 1zu1 hier im Forum..

poste mal den Quellcode von dir bitte


Profil ansehen Mail senden
27.01.2007 17:44 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
okay mein quellcode:

etwas viel vieleicht aber gut... (hab mal [php durch [ php ersetzt, solltest du im tut vll auch machen ;-) (kannst du beim tutorial vielleicht auch nochmal die ganze funktion am ende posten? danke.

ausserdem funktionieren die zitate (verschachteln ect) bei mir irgentwie nicht.

http://www.beta.bierquartier.de/php_testcenter/bbcodes

PHP:
<?php
//konfiguration

    //der kasten für den php-code
    
$php_start "<p class=\"code_php\" style=\"overflow:auto; white-space:pre;\">";
    
$php_end "</p>";



// 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) {
//php-code
$php = array();

// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU"$text$php);

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] = highlight_string($php[1][$key], TRUE);
$php[1][$key] = $php_start.$php[1][$key].$php_end;
}

// 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;\"></span>"$text);
    
$text preg_replace("/\[i\](.*)\[\/i\]/Usi""<span style=\"font-style: italic;\"></span>"$text);
    
$text preg_replace("/\[u\](.*)\[\/u\]/Usi""<span style=\"text-decoration: underine;\"></span>"$text);
    
$text preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi""<span style=\"color:\"></span>"$text);
    
$text preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi""<img src=\"\" alt=\"\" />"$text);
    
$text preg_replace("/\[img](.*)\[\/img\]/Usi""<img src=\"\" alt=\"nicht bennantes bild\" />"$text);
    
$text preg_replace("/\[h1\](.*?)\[\/h1\]/si",  "<h1 class=\"ueberschrift\">\1</h1><br />"$text);
    
$text preg_replace("/\[h2\](.*?)\[\/h1\]/si",  "<h2 class=\"unter_ueberschrift\">\1</h2><br />"$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 575;
    while(
preg_match('/\[quote\](.*)\[\/quote\]/Uis'$text)) {
     
$width -= 10;

$quote_start "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end "</p>";

$text str_replace(array("[quote]","[/quote]"),array($quote_start,$quote_end),$text);
    }

//smilies definieren
$smilies = array(
    
':D' => array('biggrin.gif''*grins*'),
//okay, die smilies mach ich ein bischen anders als du...

);

//smiies umwandeln
    
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);
    }



    return 
$text;
}


Dieser Beitrag wurde am 27.01.2007 um 17:47:12 Uhr von fish zum 2. Mal editiert.
Profil ansehen
27.01.2007 18:28 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Du hast die Funktionen auch verändert..
2 Klammern sind falsch gesetzt und bei den Zitaten benutzt du str_replace statt preg_replace.

Die PHP-Konfigurationsvariablen kannst du nicht außerhalb der Funktion definieren, weil die Variablen dann in der Funktion nicht bekannt sind.

Schalt beim Testen auch mal error_reporting(E_ALL) an, dann werden dir die ganzen Variablen angezeigt, die in der FUnktion nicht bekannt sind.

Hier die korrigierte Version deiner Funktion:

PHP:
<?php
// 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 nach hier setzen --!!
//konfiguration

    //der kasten für den php-code
    
$php_start "<p class=\"code_php\" style=\"overflow:auto; white-space:pre;\">";
    
$php_end "</p>";

//php-code
$php = array();

// PHP Code zwischenspeichern, damit er nicht durch andere Funktionen (z.B. nl2br) verfälscht wird
preg_match_all("/\[php\](.*)\[\/php\]/siU"$text$php);

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] = highlight_string($php[1][$key], TRUE);
$php[1][$key] = $php_start.$php[1][$key].$php_end;
}

// 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);

// !!-- Klammer schließen --!!
}
// 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;\"></span>"$text);
    
$text preg_replace("/\[i\](.*)\[\/i\]/Usi""<span style=\"font-style: italic;\"></span>"$text);
    
$text preg_replace("/\[u\](.*)\[\/u\]/Usi""<span style=\"text-decoration: underine;\"></span>"$text);
    
$text preg_replace("/\[color=(.*)\](.*)\[\/color\]/Usi""<span style=\"color:\"></span>"$text);
    
$text preg_replace("/\[img=(.*)\](.*)\[\/img\]/Usi""<img src=\"\" alt=\"\" />"$text);
    
$text preg_replace("/\[img](.*)\[\/img\]/Usi""<img src=\"\" alt=\"nicht bennantes bild\" />"$text);
    
$text preg_replace("/\[h1\](.*?)\[\/h1\]/si",  "<h1 class=\"ueberschrift\"></h1><br />"$text);
    
$text preg_replace("/\[h2\](.*?)\[\/h1\]/si",  "<h2 class=\"unter_ueberschrift\"></h2><br />"$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 575;
    while(
preg_match('/\[quote\](.*)\[\/quote\]/Uis'$text)) {
     
$width -= 10;

$quote_start "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end "</p>";
// !!-- preg_replace verwenden --!!
$text preg_replace("/\[quote](.*)\[\/quote\]/Uis"$quote_start."\1".$quote_end$text);
    }

//smilies definieren
$smilies = array(
    
':D' => array('biggrin.gif''*grins*'),
//okay, die smilies mach ich ein bischen anders als du...

);

//smiies umwandeln
    
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
// !!-- falsch geschlossene Klammer entfernen--!!
    
foreach($php[1] as $key => $value) {
        
$text preg_replace("/\[php\]".$key."\[\/php\]/siU"$value$text);
    }
    return 
$text;
}



Profil ansehen Mail senden
28.01.2007 15:57 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
danke! php funktioniert. aber quotes sind immer noch falsch...

also [quote ][quote ]TEXT[/quote ]text[/quote ] gibt <p class="zitat" style=" width:565px"></p>text[/quote aus...

Dieser Beitrag wurde am 28.01.2007 um 16:44:29 Uhr von fish zum 2. Mal editiert.
Profil ansehen
28.01.2007 17:08 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Benutz mal <div> statt <p>. Verschachtelte <p> machen syntaktisch nämlich keinen sinn und werden deshalb untereinander dargestellt.


Profil ansehen Mail senden
28.01.2007 19:35 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
habe ich jetzt gemacht...

eingabe: [ quote]WWW.X.DE[ quote]LOLOMGWTF[ /quote]TEST[ /quote]
ausgabe: <div class="zitat" style="width:565px;"></div>TEST[/quote]

was läuft da falsch;(
Profil ansehen
28.01.2007 23:24 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
Man muss zwei backslashes ( \\ ) benutzen, also \\1

PHP:
<?php
// Zitate umwandeln, evtl. auch verschachtelt
//breite des zitatkastens in pixeln
    
$width 575;
     while(
preg_match('/\[quote\](.*)\[\/quote\]/Uis'$text)) {
     
$width -= 10;

$quote_start "<p class=\"zitat\" style=\" width:".$width."px\">";
$quote_end "</p>";
// !!-- preg_replace verwenden --!!
$text preg_replace("/\[quote](.*)\[\/quote\]/Uis"$quote_start."\\1".$quote_end$text);
    }
?>


Das wird bei dem PHP-Code hier nicht richtig dargestellt, weil die highlight_string Funktion das als einen "escapten" Backslahs erkennt.

Dieser Beitrag wurde am 28.01.2007 um 23:25:11 Uhr von Flitze zum 1. Mal editiert.


Profil ansehen Mail senden
29.01.2007 09:08 Uhr
fish
Forenuser
registriert 08.01.2007
wohnt in de/wü
Beiträge 20
super, es funktioniert jetzt alles. DANKE nochmal!
Profil ansehen
29.01.2007 13:21 Uhr
Flitze
Administrator
registriert 17.10.2006
wohnt in Eschwege
Beiträge 332
np :)


Profil ansehen Mail senden
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  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik