kostenloser Webspace werbefrei: lima-city


Problem mit preg_replace()

lima-cityForumSonstigesSpam und sonstiges Unvergütetes

  1. Autor dieses Themas

    i-spacke

    Kostenloser Webspace von i-spacke

    i-spacke hat kostenlosen Webspace.

    Argh es tag/funktion">funktioniert nicht! Keine Ahnung warum. Verdammt ich will doch einfach nur eine normale Codefunktion haben...ahhhhhh ich werde bald verr?ckt. :confused::confused::confused:

    Liebstes Alopex! W?rst du so g?tig und w?rdest mir vielleicht komplett erkl?ren was ich bei einer BBCode-Funktion alles beachten muss.(sowas wie htmlentities() etc.) Ich seh' bei mir n icht mehr durch besser gesagt wei? ich nicht mehr genau was ich jetzt eigentlich machen muss. T_T

    Beitrag ge?ndert am 12.10.2005 17:28 von i-spacke
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. M?glicherweise liegt der Fehler darin, dass das Lima-Board mal wieder die Backslashes gefressen hat. Eckige Klammern geh?ren zur RegEx-Syntax, daher m?ssen sie mit je einem Backslash "escaped" werden.


    Wenn schon, dann so:

    $muster[] = '/\\[php\\](.*)\\[\\/php\\]/ies';
    $ersetzen[] = 'highlightstring($1, TRUE)';

    Wenn du die beiden Array-Eintr?ge sp?ter mit preg_replace() verarbeiten willst. W?rde ich mal so sagen.


    Die Funktion von compactdisc funktioniert (siehe Link). Nimm doch die.

    Beitrag ge?ndert am 12.10.2005 17:57 von alopex
  4. Autor dieses Themas

    i-spacke

    Kostenloser Webspace von i-spacke

    i-spacke hat kostenlosen Webspace.

    "Escaped" hatte ich es ja extra, weil mir das ja schon bekannt war. Naja ich wollte das ganze ja eigentlich in einem Rutsch machen und deswegen auch das Array...naja ich werde die Funktion jetzt eh aufteilen, damit man bestimmte Sachen auch ausschalten kann und dann werde ich vielleicht ein Tutorial zu einer BBCode-Funktion schreiben, da ich das hier noch nicht gesehen habe.

    Aber nochmal ne andere Frage. Reicht es wenn ich das hier:

    $text = stripslashes($text); // ?berfl?ssige Backslahes entfernen
        $text = htmlentities($text); //HTML-Code entfernen 
        $text = nl2br ($text);       //Zeilenumbruecheumwandeln


    mache bevor ich preg_replace mache oder hab ich was vergessen oder zu viel???
  5. Kommt darauf an, was du erreichen willst.

    F?r stripslashes() sehe ich schonmal gar keine Notwendigkeit. Denn normalerweise kommen in Benutzereingaben keine unn?tigen Slashes vor. Und aus der Datenbank kommen sie auch nur, wenn du vorher mit addslashes() welche reingemacht hast. (Dazu siehe auch weiter unten)

    html_entities() sorgt daf?r, dass bestimmte HTML-Codes entwertet werden. Ich bevorzuge ein simples preg_replace(). Da wei? ich auch sicher, was alles umgewandelt wird. Das ist bei html_entities() nicht immer klar (h?ngt von der PHP-Version ab).

    $out = preg_replace(
    array('/&#38;/', '/</', '/>/'),
    array('&#38;#38;','&#38;#60;','&#38;#62;'),
    $in
    );

    Das entwertet alle HTML-Zeichen, die Probleme machen k?nnten (mehr ist nicht n?tig). Kannst du ja auch als erstes in deine BBCode-Funktion einf?gen.

    nl2br() kannst du einf?gen, wenn du willst, das eingegebene Zeilenumbr?che (also "Enter") auch dargestellt werden sollen -- musst du aber nicht. Und bei HTML- oder PHP-Quellcodes (also bspw. bei den [&#1089;&#1086;d&#1077;]-Tags) solltest du es sogar weglassen. Denn wenn du diese Bereiche mit <pre> ausgibst, wird der Zeilenumbruch schon vom Browser interpretiert. So entstehen zus?tzliche Leerzeilen.

    Wichtig ist, dass du beim Abspeichern in einer Datenbank die gef?hrlichen Zeichen entwertest. Dazu gibt es f?r jede Datenbank einen speziellen Befehl, f?r MySQL ist das beispielsweise mysql_escape_string():

    http://de.php.net/manual/de/function.mysql-escape-string.php

    Die Standard-PHP-Funktionen, wie addslashes(), sind daf?r nicht geeignet, weil sie ?ber die speziellen F?higkeiten der Datenbank ja nicht Bescheid wissen k?nnen.

    MfG
    alopex


    Beitrag ge?ndert am 14.10.2005 17:16 von alopex
  6. theuntouchables

    theuntouchables hat kostenlosen Webspace.

    Also ich habe mir jetzt mal nicht die m?he gemacht das ganze durchzulesen, aber wenn ich es richtig verstanden habe bekommt ihr alle kein gescheites syntaxhighlight hin...
    Wer eins haben will soll soch mal bei mit per PN melden, ich habe diverse p-/regex sachen, ein funktionierendes syntaxhighlight is auch dabei...
    Da ich gerade in der schule bin und meine sachen nicht aufm server habe werde ich wenns gew?nscht is das ganze auch nochmal hier erkl?ren...

    mfg
    --TheUntouchables
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!