php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.02.2005, 15:05  
Gast
 
Beiträge: n/a
Standard [Erledigt] BB Code funzt net. HTML angezeigt aber net "ausgeführt&

Hi,

eine kleine Hürde muss ich noch nehmen, bevor mein Forum fertig ist. Das ist der BB Code.
Ich gehe folgendermaßen vor. Sollten magic_quotes_gpc "off" sein, so bearbeite ich erstmal den gesamten String der Nachricht mit stripslashes und wieder mit addslashes. Immer füge ich htmlspecialchars hinzu.

So sieht meine Funktion aus, die den BB Code erstellt:
PHP-Code:
<?php
    
/** enable BB Code
    *
    *    @param string $text: message
    */    
    
function BBCode($text)
    {
        
$pattern = array(    '|\[b\](.*)\[/b\]|smUi',
                    
'|\[i\](.*)\[/i\]|smUi',
                    
'|\[list\](.*)\[/list\]|smUi',
                    
'|\[list=1\](.*)\[/list\]|smUi',
                    
'|\[list=a\](.*)\[/list\]|smUi',
                                  
'|\[\*\](.*)|smUi',
                                
'|\[url=(.*)\](.*)\[/url\]|smUi',
                                
'|\[url\](.*)\[/url\]|smUi',
                    
'|\[size=(.*)\](.*)\[/size\]|smUi',
                    
'|\[color=(.*)\](.*)\[/color\]|smUi',
                    
'|\[email=(.*)\](.*)\[/email\]|smUi',
                    
'|\[email\](.*)\[email\]|smUi',
                    
'|\[quote\](.*)\[/quote\]|smUi',
                    
'|\[quote=(.*)\](.*)\[/quote\]|smUi',
                    
'|\[img\](.*)\[/img\]|smUi',
                    
'|\[img=(.*)\](.*)\[/img\]|smUi',

                );

        
$replace = array(    '[b]\\1[/b]',
                    
'[i]\\1[/i]',
                    
'<ul>\\1\[/list]',
                    
'[list=1]\\1[/list]',
                    
'[list=a]\\1[/list]',
                    
'[*]\\1\',
                    '
[url="http://\\1"]2[/url]',
                                '
[url="http://\\1"]1[/url]',
                    '
<span style="font-size:\\1px;">2</span>',
                    '
<span style="color:\\1;">2</span>',
                    '
[email="\\1"]2[/email]',
                    '
[email="\\1"]1[/email]',
                    '
<div><class="quote_title">Zitat:</p><class="quote">1</p></div>',
                    '
<div><class="quote_title">1 schrieb:</p><class="quote">2</p></div>',
                    '
[img]1[/img]',
                    '
[img]2[/img]',

                );

        $text = preg_replace($pattern,$replace,$text);
        $text = str_replace('
http://http://','http://',$text);
        
        
return $text;
    }
?>
Meine Seite läuft mit xsl stylesheets, die ich mit DOM bearbeite. Den XML String erstelle ich dynamisch in der jeweiligen PHP Datei.

Wenn man z.b. \[b\]text\[/b\] (ohne \) im Postingform eingibt wird dieser Tag auch korrekt durch text ersetzt.

In der Datenbank steht dann das:
Zitat:
&lt;strong&gt;fett&lt;/strong&gt;
Der XML Teil der Nachricht so:
Zitat:
<posting_message>fett</posting_message>
Das XSL Stylesheet so:
Zitat:
<xsl:apply-templates select="message"/>
zusätzlich habe ich noch ein Template, das
hinzufügt:
Zitat:
<xsl:template mach="br">


</xsl:template>
Nun wird in der Nachricht, aber nicht der Text fett angezeigt, sondern der HTML Code:
Zitat:
text
Ich habe auch schon versucht in der BB Code Funktion die < und > durch \ auszukommentieren, das Endergebnis ist das selbe, nur dass in der Datenbank der Code ohne Specialchars steht.

Kann mir da einer helfen, wie ich es hinbekomme, dass der HTML Code als solcher betrachtet und "ausgeführt" wird?

Das selbe Problem habe ich auch mit Smileys...

mfg koelle
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 20.02.2005, 22:06  
Erfahrener Benutzer
 
Registriert seit: 09.09.2004
Beiträge: 716
PHP-Kenntnisse:
Anfänger
Kort zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Du darfst htmlspecialchars (oder besser htmlentites) erst direkt vor der Ausgabe anwenden. Das ist der Grund warum es bei dir nicht funktioniert.

stript_tags() kannst du bereits nach der Eingabe anweden.
__________________
"Only wimps use tape backup: real men just upload their important stuff on ftp, and let the rest of the world mirror it." - Linus Torvalds, 1996
Kort ist offline   Mit Zitat antworten
Alt 21.02.2005, 08:46  
Gast
 
Beiträge: n/a
Standard

Hi,

leider funktioniert das nicht so einfach. Wenn ich direkt vor der Ausgabe htmlentities() anwende bekomme ich bei Umlauten eine Fehlermeldung, weil ich in XSL Stylesheets nicht &auml; etc. verwenden kann.

Ich hab aber herausgefunden, dass es, wenn ich kein htmlentities() anwende, es einfach mit "echo" funktioniert. Jedoch gibt es Probleme im XML String. Denn so werden die HTML Elemente (z.b. text) als XML Element angesehen....

Ich habe mir nun überlegt, ein Template für die BB Codes zu schreiben. Für einfache Tags wie [b] oder [i] könnte ich das auch machen. Z.B. für [b]:

<xsl:template match="strong">
<xsl:value-of select="."/>
</xsl:template>


Dann wird der Text auch fett dargestellt. Jedoch kann ich das nicht für jedes einzelne Element machen. Bei Links, Email-Adressen, Bildern oder gar quoten sind die Tags nämlich kompliziert. (z.b. quote: <div><p class="quote_title">Zitat</p><p class="quote">\\1</p></div>)

Weiter habe ich versucht einfach alle untergeordneten Templates des "message"-Templates anzuwenden:

<xsl:template match="message">
<xsl:apply-templates />
</xsl:template>


Dann wird allerdings nur der Text angezeigt, ohne Formatierung. Meine Idee wäre entweder ein Template zu machen, dass auf alle Tags zutrifft oder irgendwie die BB Code Funktion so umzuschreiben, dass es einfach bei der Ausgabe automatisch z.b. fett angezeigt wird.

Hat da jemand eine Idee?

mfg koelle
  Mit Zitat antworten
Alt 21.02.2005, 09:25  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard Re: BB Code funzt net. HTML angezeigt aber net "ausgefü

Zitat:
Zitat von koelle
In der Datenbank steht dann das:
Zitat:
&lt;strong&gt;fett&lt;/strong&gt;
nur btw, in der DB sollte immer der BBCode stehen, weil du willst ja die möglichkeit haben das ganze zu editieren. das Umwandeln, findet bei der Ausgabe statt.

mfg
robo47
robo47 ist offline   Mit Zitat antworten
Alt 21.02.2005, 11:27  
Gast
 
Beiträge: n/a
Standard

Hi,

ist ne gute Idee. Momentan hab ich nämlich eine 2. Funktion geschrieben, die das ganze zurückverwandelt...
So ists aber viel einfacher
thx,

koelle
  Mit Zitat antworten
Alt 23.02.2005, 21:40  
Gast
 
Beiträge: n/a
Standard

Hi,

habe das Problem gelöst. Anstatt in die BB Tags durch HTML tags zu ersetzen habe ich nun diese durch bestimmte XML Tags ersetzt und mir dann zu jedem XML Tag ein xsl:template gemacht.

z.b. Smilies:
PHP-Code:
<?php
    
/** enable smileys in message
    *
    *    @param string $text: message
    */    
    
function smileys($text)
    {
        global 
$cfg$db;

        
$db1 = new Database($cfg['mysql']['db']);
        
$db1->sendQuery($this->getSmileys(''));
        
        
$pattern = array();
        
$replace = array();
        while (
$row1 $db1->fetchObject())
        {
            
$pattern[] = $row1->code;
            
$replace[] = '<smilie><img>images/smileys/'.$row1->img.'</img><alt>'.$row1->code.'</alt></smilie>';
        }
            
        
$text str_replace($pattern,$replace$text);
        return 
$text;
    }

?>
Die Smileys habe ich in einer Datenbank gespeichert. Das XSL template sieht dann z.b. so aus:

Zitat:
<xsl:template match="smilie">
[img]{img}[/img]
</xsl:template>
mfg koelle
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] [S] Html oder Php Code Hamii27 HTML, Usability und Barrierefreiheit 9 23.07.2008 22:32
[Erledigt] HTML Code aus JavaScript ausgeben alexxtwentyeight JavaScript, Ajax und mehr 1 17.06.2008 08:18
Design und Code Trennen TeazY PHP Tipps 2008 29 21.05.2008 12:08
Nur bestimmten Html Code zulassen? litterauspirna PHP Tipps 2008 5 29.04.2008 12:30
Html Code maskieren mit php Mania PHP Tipps 2008 5 12.10.2007 08:34
Emailversand: Html wird als Anhang angezeigt. actionjackson PHP Tipps 2007 2 17.07.2007 12:03
Erzeugten html code an php übergeben test022 PHP Tipps 2006 5 11.08.2006 08:53
Html Code Komplett auslesen PHP Tipps 2005 15 04.01.2005 22:59
HTML Code in Variable - GEFAHR? Beatbox PHP Tipps 2004-2 4 18.12.2004 14:02
[Erledigt] HTML Formular durch PHP Code per Mail versenden PHP Tipps 2004-2 3 12.11.2004 11:48
JS Variable im HTML Code verwenden HTML, Usability und Barrierefreiheit 1 05.10.2004 08:52
Code Html for food Off-Topic Diskussionen 11 19.07.2004 00:19
Ergebnis aus PHP in HTMl speichern funzt nicht als Cronjob PHP Tipps 2004 5 28.06.2004 21:56
html code in eine textarea durch buttondruck PHP Tipps 2004 8 23.06.2004 14:46
[Erledigt] html code in eine textarea durch link HTML, Usability und Barrierefreiheit 1 22.06.2004 20:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php code wird angezeigt, bb codes funktion, bbcode html xsl, bbcode html tag wird angezeigt, .net html into bbcode, xsl html tags werden angezeigt, php bbcods werden nich angezeigt, xsl tag nicht sichtbar, xsl funktion nur text ohne formatierung, &quot; wird angezeigt, skype bbcode, bbcode in php email, html durch bb codes ersetzen, quotebbcode.class, skype bb codes, wie füge ich smilies in replacer - list ein, wie füge ich html codes in skype ein, html code wird angezeigt, skype bb-codes, skype bbcode html

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:20 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.