Logo - MyWebsolution.de
User gesamt  :  2787977
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 5 6 7 8  > 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($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("/(&#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=\"\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($linkname, 0, 45-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), 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;
            }
?>


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
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