[PHP] Probleme mit bbcodes

funnyzocker

Member
ID: 50548
L
5 Mai 2006
23
1
Hallo.
Ich arbeite gerade für mein Projekt an bbcodes.
Nun ist es so das ich über ein Formular folgendes eingebe.
[ align=center ] Mittiger test [ / align]
Leider speichert er es so wie es im bild unten zu sehen ist.
Das sind die beiden Funktionen die bbcode behandeln
PHP:
function bbcode_format ($str) {
    $str = htmlentities($str);

    $simple_search = array(
                '/\[b\](.*?)\[\/b\]/is',                                
                '/\[i\](.*?)\[\/i\]/is',                                
                '/\[u\](.*?)\[\/u\]/is',                                
                '/\[url\=(.*?)\](.*?)\[\/url\]/is',                         
                '/\[url\](.*?)\[\/url\]/is',                             
                '/\[align\=(left|center|right)\](.*?)\[\/align\]/is',    
                '/\[img\](.*?)\[\/img\]/is',                            
                '/\[mail\=(.*?)\](.*?)\[\/mail\]/is',                    
                '/\[mail\](.*?)\[\/mail\]/is',                            
                '/\[font\=(.*?)\](.*?)\[\/font\]/is',                    
                '/\[size\=(.*?)\](.*?)\[\/size\]/is',                    
                '/\[color\=(.*?)\](.*?)\[\/color\]/is',
                '/\n/is'        
                );

    $simple_replace = array(
                '<strong>$1</strong>',
                '<em>$1</em>',
                '<u>$1</u>',
                '<a href="$1">$2</a>',
                '<a href="$1">$1</a>',
                '<div style="text-align: $1;">$2</div>',
                '<img src="$1" />',
                '<a href="mailto:$1">$2</a>',
                '<a href="mailto:$1">$1</a>',
                '<span style="font-family: $1;">$2</span>',
                '<span style="font-size: $1;">$2</span>',
                '<span style="color: $1;">$2</span>',
                '<br/>'
                );

    // Do simple BBCode's
    $str = preg_replace ($simple_search, $simple_replace, $str);

    // Do <blockquote> BBCode
    $str = bbcode_quote ($str);

    return $str;
}
1ecc15ac2138fcae45fc.jpg
 
Kannst du dein Problem etwas genauer beschreiben? (Was sollte anderst sein?)

Ist das Problem, dass nun "<br />" auf der Seite steht? (Wenn ja, das kommt von der htmlentities Funktion.)
 
Genau

Hallo.
Ja das ist das Problem. Es werden umbrüche eingefügt die nicht da sein sollen.
Also trennt das script z.B [ algin = center] mittiger text [ / align ] genau zwischen den beiden wörtern und schreibt dort dann das "<br/> hin.

Habe es auch schon versucht ohne htmlentities aber dann wird nach jedem geschlossenen bbcode ein zeilenumbruch gemacht
 
Wie lautet der ursprüngliche String ($str), den du der Funktion übergibst?

Mit dem Befehl:
Code:
var_dump($str);
mal ausgeben lassen.

Beachte dass du die "echte" Ausgabe dann nur im Quelltext siehst (mit echten Zeilenumbrüchen, nicht mit <br/>). Dort scheint dann zwischen den beiden Wörtern ein zeilenumbruch zu sein. Wie lautet die Ausgabe?
 
Wo

Wo muss das var dump hin?
In die Funktion oder in die ausgebende seite?

Bisher ist der ursprüngliche string
$beschreibung = bbcode_format( $row[6] );
 
Ersetzte mal die zeile, die zu gerade gepostet hast mit dieser Veränderung:
Code:
var_dump($row[6]);
$beschreibung = bbcode_format( $row[6] );
var_dump($beschreibung);

Anschließend die Ausgabe (zu finden im Quelltext der Seite) hierhin posten.
 
Ok

Habe den fehler gerade durch zufall gefunden.
Habe bevor ich die BBcodes eingebaut habe den text mit wordwrap auf 200 Zeichen begrenzt.

Nun wo das raus ist ist der Fehler komischerweise weg.
Irgendwie hat sich das beides nicht vertragen.

Trotzdem danke für die Mühe