Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Suche BBCode-Klasse für PHP (https://www.delphipraxis.net/148891-suche-bbcode-klasse-fuer-php.html)

alcaeus 10. Mär 2010 20:29

Re: Suche BBCode-Klasse für PHP
 
Moin Matze,

Zitat:

Zitat von Matze
@Valle: Hm ok, aber ein Framework möchte ich dennoch nicht nutzen.

er hat doch bereits gesagt, dass du kein Framework nutzen musst. Du sollst dir lediglich die Zend_Markup-Klasse ziehn und fertig. Ob du die Klasse verwendest oder doch "mySuperDuperUberBBCodeParser" verwendest ist ja kein Unterschied, oder? ;)
Guck dir bei der Gelegenheit auch die Dokumentation zu Zend_Markup an.

Ansonsten kann ich dir allerhoechstens das BBCodde-System von phpBB empfehlen - allerdings steht diese Klasse unter der GPL und ist ausserdem etwas schlimmer rauszuziehn.

Greetz
alcaeus

Matze 10. Mär 2010 20:33

Re: Suche BBCode-Klasse für PHP
 
Überredet, ich schaue mal, ob ich damit etwas anfangen kann. :stupid:

Valle 10. Mär 2010 21:19

Re: Suche BBCode-Klasse für PHP
 
@NamenLozer:

Mh, also ich habe auf meiner Webseite alle BB-Codes mittels Regular Expressions geparst. Ich habe damit keine Probleme oder Sicherheitlücken. Der Code ist zwar schon etwas älter, aber er funktioniert recht gut. Es kann gut sein, dass mein BB-Code nicht ganz so umfangreich ist, wie den auf den du dich beziehst. Aber für Zitate, Code-Abschnitte und einfachen Inline-Markups wie Kursivschrift reicht es auf jeden Fall. Kannst du mir vielleicht mit einem kleinem BB-Code Beispiel erläutern, wo genau sich das Problem befindet? Würde mich gerne damit beschäftigen. :-)

Liebe Grüße,
Valle

Namenloser 10. Mär 2010 21:29

Re: Suche BBCode-Klasse für PHP
 
@Valle:
Ein konkretes beispiel habe ich nicht, zumal ich ja deine Implementierung nicht kenne, aber versuch einfach mal, verschiedene BBCode-Tags ungünstig zu verschachteln. Die Wahrscheinlichkeit, dass du dir zumindest dein Layout damit zerschießt, ist recht groß. Sogar in großen Foren gibt es gelegentlich dieses Problem - ich erinnere mich an ein Forum, wo ich früher aktiv war, welches auf WBB2 basierte. Dort gab es einen "Spam"-Bereich, in dem wir uns öfters einen Spaß daraus gemacht haben, das Layout durch ungültig verschachtelte BBCodes zu zerschießen. Dabei ist das WBB sogar eine professionelle Software, die sogar Geld kostet.

Aber selbst wenn dein Layout nicht gleich kaputt gehen sollte, erzeugst du zumindest invaliden (X)HTML-Code.

Matze 10. Mär 2010 22:09

Re: Suche BBCode-Klasse für PHP
 
Zend hat einen riesigen Overhead. Das ist alles andere als Standalone.

Mithrandir 11. Mär 2010 14:23

Re: Suche BBCode-Klasse für PHP
 
Ich nutze NBBC. Macht n guten Eindruck, ist schnell, funktioniert, und wird weiterentwickelt. :)

Matze 11. Mär 2010 15:03

Re: Suche BBCode-Klasse für PHP
 
Das schaue ich mir an, danke. :)

Edit: ganz wohl ist mir nicht, wenn ich solche RegEx darin sehe. :shock:


Code:
if (preg_match("/^
   (?:https?|ftp):\\/\\/
   (?:
      (?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+
      [a-zA-Z0-9]
      (?:[a-zA-Z0-9-]*[a-zA-Z0-9])?
   |
      \\[
      (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}
      (?:
         25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-zA-Z0-9-]*[a-zA-Z0-9]:
         (?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21-\\x5A\\x53-\\x7F]
            |\\\\[\\x01-\\x09\\x0B\\x0C\\x0E-\\x7F])+
      )
      \\]
   )
   (?::[0-9]{1,5})?
   (?:[\\/\\?\\#][^\\n\\r]*)?
   $/Dx", $string)) return true;

// ...

$output = preg_split("/( (?:
      (?:https?|ftp) : \\/*
      (?:
         (?: (?: [a-zA-Z0-9-]{2,} \\. )+
            (?: arpa | com | org | net | edu | gov | mil | int | [a-z]{2}
               | aero | biz | coop | info | museum | name | pro
               | example | invalid | localhost | test | local | onion | swift ) )
         | (?: [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} )
         | (?: [0-9A-Fa-f:]+ : [0-9A-Fa-f]{1,4} )
      )
      (?: : [0-9]+ )?
      (?! [a-zA-Z0-9.:-] )
      (?:
         \\/
         [^&?#\\(\\)\\[\\]\\{\\}<>\\'\\\"\\x00-\\x20\\x7F-\\xFF]*
      )?
      (?:
         [?#]
         [^\\(\\)\\[\\]\\{\\}<>\\'\\\"\\x00-\\x20\\x7F-\\xFF]+
      )?
   ) | (?:
      (?:
         (?: (?: [a-zA-Z0-9-]{2,} \\. )+
            (?: arpa | com | org | net | edu | gov | mil | int | [a-z]{2}
               | aero | biz | coop | info | museum | name | pro
               | example | invalid | localhost | test | local | onion | swift ) )
         | (?: [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} )
      )
      (?: : [0-9]+ )?
      (?! [a-zA-Z0-9.:-] )
      (?:
         \\/
         [^&?#\\(\\)\\[\\]\\{\\}<>\\'\\\"\\x00-\\x20\\x7F-\\xFF]*
      )?
      (?:
         [?#]
         [^\\(\\)\\[\\]\\{\\}<>\\'\\\"\\x00-\\x20\\x7F-\\xFF]+
      )?
   ) | (?:
      [a-zA-Z0-9._-]{2,} @
      (?:
         (?: (?: [a-zA-Z0-9-]{2,} \\. )+
            (?: arpa | com | org | net | edu | gov | mil | int | [a-z]{2}
               | aero | biz | coop | info | museum | name | pro
               | example | invalid | localhost | test | local | onion | swift ) )
         | (?: [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} \\. [0-9]{1,3} )
      )
   ) )/Dx", $string, -1, PREG_SPLIT_DELIM_CAPTURE);

himitsu 11. Mär 2010 16:18

Re: Suche BBCode-Klasse für PHP
 
Das geht ja noch ... du willst nich wissen, wie eine RegEx für alle möglichen laut Spec erlaubten URLs aussieht. :lol:

Mithrandir 11. Mär 2010 19:43

Re: Suche BBCode-Klasse für PHP
 
Naja, dafür ist die Klasse ganz sauber geschrieben. ;)

Insofern... Kann mans ja mal probieren. ;) Zumal ja auch HTML-Input gefiltert wird.

Matze 11. Mär 2010 20:37

Re: Suche BBCode-Klasse für PHP
 
Bisher macht sie einen sehr guten Eindruck, muss ich sagen. :thumb: Nur 140 KB PHP-Code ist recht viel, aber das wird der Server schon verkraften können. *g*
Das einzige, was ich in der Klasse selbst ändern musste war das Rausschmeißen sämtlicher vordefinierter Codes.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz