php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.04.2010, 11:49  
Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 46
PHP-Kenntnisse:
Anfänger
CL90 ist zur Zeit noch ein unbeschriebenes Blatt
Standard HTML Tags schließen?

Moin moin!

ich bin grade dabei eine kommentarbox zu bauen.
ich bin auch schon sehr weit. es gibt nur noch etwas das mich stört:
und zwar ist es möglich durch die BBcodes die nachfolgenden kommentare zu ändern.
normale HTML tags werdenn druch den striptags(); befehl entfernt, aber ich wandel die bbcodes "" in => "<b></b>" um. daher ist es noch möglich mit:
[b] ohne schließendes element die anchfolgenden texte zu beeinflussen.
das sieht dann so aus:

Textfeld vor dem fehler:


Textfeld nach dem fehler:


was mir aufgefallen ist, ist das inhalte anderer <div> nicht beeinflusst werden. aber jetzt alle anderen texte in eigene divs zu stopfen wäre irgendwie unschön weil die HTML tags trozdem offen wären.

gibt es eine möglichkeit wie ich diese HTML tags schließen könnte?
ich will nicht grade hinter jeden kommentar 100x "</b>" schreiben nur um sicher zu gehen das niemand da zu viele "[b]" geschrieben hat
CL90 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 12.04.2010, 12:19  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Naja irgendwo wirst du ja [b] in <b> umwandeln. Dort musst du eben nur dann die Werte ersetzen wenn immer ein schließender Tag vorhanden ist. BBCode Parser gibt es aber schon genug. Einfach mal suchen und schauen wie die es erledigen.
Flor1an ist offline  
Alt 12.04.2010, 12:43  
Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 46
PHP-Kenntnisse:
Anfänger
CL90 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wie könnte man sowas anstellen?
mein code sieht so aus:
PHP-Code:
        $replace         = array(        "[b]"           => "<b>",
                                         
"[/b]"          => "</b>",
                                         
"[i]"           => "<i>",
                                         
"[/i]"          => "</i>",
                                         
"[u]"           => "<u>",
                                         
"[/u]"          => "</u>"
                                 
);

        echo 
strtr($comm_part[2],$replace); 
muss ich da vlt sowas wie "$bzähler++;" einbauen um rauszukriegen wie viele geöffnet wurden, und wie viele geschlossen wurden um die fehlenden schließer am ende zu ergänzen?

ich versuch immer gerne alles selbst zu machen, aber dann frag ich mich auch immer ob das nicht anders leichter, und weniger rechenlastig geht.
ich möchte ja ein schönes ergebniss, daran lernen, ohne den server dauerhaft zu fordern.
CL90 ist offline  
Alt 12.04.2010, 13:04  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Und deswegen sollst du dir bestehende Lösungen anschauen. Such dir 2-3 BBCode parser raus und schau wie die es umgesetzt haben. Mit dem Zähler wäre schon mal eine Möglichkeit.
Flor1an ist offline  
Alt 12.04.2010, 13:15  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Sieh dir mal den letzten Parameter an

PHP: str_replace - Manual

So kannst du die Differenz zwischen Start- und Endtags berechnen. Das ganze in einer Schleife für jeden Tag und du hast was du willst.
chorn ist offline  
Alt 12.04.2010, 14:53  
Erfahrener Benutzer
 
Registriert seit: 05.02.2009
Beiträge: 1.401
PHP-Kenntnisse:
Fortgeschritten
Destruction ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach es einfach mit preg_replace und wenn dann noch Tags übrig sind dann haust du die raus ...
__________________
"Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]
Destruction ist offline  
Alt 15.04.2010, 10:30  
Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 46
PHP-Kenntnisse:
Anfänger
CL90 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

soo

ich hab mir jetzt eine schöne lösung überlegt. ich dachte mir vlt steht jemand vo einem ähnlichem problem und könnte dabei hilfe gebrauchen.

das diese funktion zählt in einem string die anzahl von parameter 1 und die anzahl von parameter 2. ist parameter 1 größer wird parameter 2 so oft an das ende des strings gehängt bis beide gleichoft vorhanden sind.
beispiel:
$string = "[b] [b] [b] blubb keks"
nach nutzen der funktion ist der $string:
$string = " blubb keks "

viel spaß damit

PHP-Code:
         function closetag($data$tagopen$tagclose)
         {
                 
$open                   substr_count($data$tagopen);
                 
$close                  substr_count($data$tagclose);
                 if(
$open $close)
                 {
                         
$toclose        $open $close;
                         
$tagcount       0;
                         while(
$tagcount $toclose)
                         {
                                 
$tags $tags."$tagclose";
                                 
$tagcount++;
                         }
                 }
                 
$GLOBALS["convertet_text"] = $data.$tags;
         }

         
$convertet_text nl2br(strip_tags($_POST['content'], "$allowtag") );
         
closetag($convertet_text"[b]""[/b]");
         
closetag($convertet_text"[i]""[/i]");
         
closetag($convertet_text"[u]""[/u]");
         
closetag($convertet_text"[color=""[/color]"); 
CL90 ist offline  
Alt 15.04.2010, 13:12  
Erfahrener Benutzer
 
Registriert seit: 28.01.2010
Beiträge: 615
PHP-Kenntnisse:
Fortgeschritten
tkausl ist in Verruf geraten
Standard

mit RegExp geht das super.
Code:
/\[b\](.*)\[\/b\]/s
Code:
<b>\1</b>
tkausl ist offline  
Alt 15.04.2010, 13:21  
Benutzer
 
Registriert seit: 22.03.2010
Beiträge: 46
PHP-Kenntnisse:
Anfänger
CL90 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

stimmt...
nja aber jetzt hab ich meine lösung
CL90 ist offline  
Alt 15.04.2010, 13:42  
Erfahrener Benutzer
 
Benutzerbild von mermshaus
 
Registriert seit: 14.06.2009
Beiträge: 1.733
PHP-Kenntnisse:
Fortgeschritten
mermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz seinmermshaus kann auf vieles stolz sein
Standard

Kleine Anmerkung:

Zitat:
Zitat von tkausl Beitrag anzeigen
mit RegExp geht das super.
PHP-Code:
<?php

echo preg_replace('/\[b\](.*)\[\/b\]/s',
                  
'<b>\1</b>',
                  
'[b]Dies[/b] ist ein [b]Test[/b]');

// <b>Dies[/b] ist ein [b]Test</b>
Der Ausdruck müsste ungreedy sein: /\[b\](.*?)\[\/b\]/s

Problem ist immer: Was passiert mit BBCode-Tags in [code]-Tags oder [noparse]-Tags? Dem ist mit simplen Ersetzungen soweit ich weiß nicht so recht beizukommen.

Edit: Weil ich's gerade sehe: http://www.php.de/php-einsteiger/668...mbruechen.html (anderer Thread zum Thema)
__________________
Blog | Buch | Kaloa

Geändert von mermshaus (15.04.2010 um 14:02 Uhr).
mermshaus ist offline  
 


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] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
seltsames Problem mit strip_tags und zugelassenen HTML Tags litterauspirna PHP Tipps 2009 9 07.08.2009 14:29
HTML Tags verschwinden lassen oma420 PHP Tipps 2009 3 27.03.2009 14:31
[Erledigt] HTML tags verbieten spikytux PHP Tipps 2009 6 07.02.2009 13:48
Html Tags in textarea nofear87 JavaScript, Ajax und mehr 6 02.11.2008 00:21
[Erledigt] RegEx: beliebige HTML Tags in String ersetzen Der Blaue Gott Balmung PHP Tipps 2008 8 13.09.2008 18:01
Bestimme HTML Tags mittels RegEx rausfiltern Mano PHP Tipps 2008 6 27.09.2007 14:22
nur erlaubte html tags umwandeln PHP Tipps 2006 2 30.10.2006 13:53
[Erledigt] Validation Problem - HTML Tags in Javascript HTML, Usability und Barrierefreiheit 7 06.03.2006 23:38
HTML Tags als Text ausgeben? cebe PHP Tipps 2006 1 03.03.2006 15:50
Erkennung von HTML Tags McLain PHP-Fortgeschrittene 4 26.04.2005 10:03
Filtern von HTML Tags aus String PHP Tipps 2005 2 18.02.2005 08:44
[Erledigt] Frage: Text abschneiden aber auf html tags achten PHP-Fortgeschrittene 1 19.01.2005 20:46
[Erledigt] imap_qprint ohne (HTML Tags) PHP-Fortgeschrittene 0 29.09.2004 14:09
[Erledigt] Probleme mit html tags! PHP Tipps 2004 5 28.07.2004 23:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
html tag schließen, html tags schließen, tags schliessen, tags schließen, php tag schließen, regex tags schließen, alle tags schliessen, html tag schliessen, php tag schliessen, schließen tag, php html tags schließen, tag schließen, php alle offenen html tags schliessen, javascript offene tags schließen, wann html tag mit > und wann mit /> schließen, html schließen php, schließen html, warum html tags schließen, html code schliessen, html tag nicht schließen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:37 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