Logo - MyWebsolution.de
User gesamt  :  2787954
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 3 4 5 6 7 8  > Posts pro Seite: 5 10 20
Autor Thread
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( $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("/(&#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), 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;
}
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 5 6 7 8  > no reply
Powered by Pascal Landau © 2006 MyWebsolution.de
Designed by Pascal Landau © 2006 MyWebsolution.de
 
 
 
 
Home Email Impressum Disclaimer Statistik