RegExpr mit PHP

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von hehejo, 09.12.2004.

  1. #1 hehejo, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    PHP:
    Ich bin gerade dabei für meine Formulare auf meiner Homepage  diese Schreibweisen 
    einzubauen
    :
    [
    url=link]beschreibung[/urlund [b]fett[/b].

    Bei einzelnen Ersetzungen (nur einmal [urloder nur einmal [b])
    im Text funktioniert das wunderbarNur wenn ich mehrere [urlbzw. [bim Text habe
    dann kommt er durcheinander bzwführt das Suchmuster nur einmal aus.

    Das möchte ich mit PHP und RegExp machenDazu nutze ich die Funktion
    preg_replace
    ($suchmuster$ersetzung$zeichenkette).

      
    für [url]
     
    $suchmuster "#\[url=(http://.+)\](\w+)\[/url\]#";
     
    $ersetzung "<a href=\"\\1\">\\2</a>";

     
    und für [b]
     
    $suchmuster "#\[b\](\w+)\[/b\]#";
     
    $ersetzung "<b>\\1</b>";

    Die 
    Suchmuster funktionieren wie oben erwähnt wunderbarwenn ich z.Bnur
    [url=http://www.hehejo.de]hehejo[/url] als Text habe.

    Aber aus aus
    [b]fett[/b] [b]auch dick[/b]
    wird (nur)
    <
    b>fett</b> [b]auch dick[/b]

    oder schlimmeraus
    [url=http://www.hehejo.de]hehejo[/url] [url=http://link]beschreibung[url]
    wird das hier:
    <
    a href="http://localhost/hehejo]hehejo[/url]  [url=http://link">beschreibung</a>
    Was muss ich schreiben, damit die Fehler nicht mehr auftauchen?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    he jo,

    hab' mich eben versucht durch deinen post durchzukämpfen. nutz' doch bitte
    PHP:
     anstatt [CODE]. die regexbereiche sind durch dein substituieren ja kaum zu entschlüsselnmachst du das weil die darstellung hier verzerrt wird oder bei dir auf der site? *confused*

    [
    QUOTE=hehejo]preg_replace($suchmuster$ersetzung$zeichenkette)[/QUOTE]nutze lieber pregi_replace dafür.

    grusssys.
     
  4. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    take it ungreedy ???
     
  5. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
     
  6. #5 sysdef, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    bei mir auch nicht, ich meinte eregi_replace, sry :D

    ~sys.

    p.s.: schau dir auch mal RFC 2606 an.
     
  7. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    eregi_replace
    gibt's :-) Aber damit funktioniert es nimmer.

    Für was ist denn das RFC gedacht?
     
  8. #7 sysdef, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    dass du nicht _deine_ url in beispielen nutzen musst nutzen. sollte man wegen den harvester unterlassen.

    teste mal folgendes aus. sollte so gehen...
    PHP:
    $string eregi_replace("\\[url=\"([^\"]*)\"\\]([^\\[]*)\\[\\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$string);
    $string eregi_replace("\\[url=([^\"]*)\\]([^\\[]*)\\[\\/url\\]","<a href=\"\\1\" target=_blank>\\2</a>",$string);
    gruss, sys.
     
  9. #8 hehejo, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Verdammt, bei den RegExpr blick ich nicht durch!
    Das zweite macht genau das Gleiche wie meines oben.
    Der Link wird ebenfalls verstümmelt...

    hmm...

    noch mal zu "meinem" Format:
    PHP:
    [url=link]beschreibung[/url]
     
  10. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Wuerdest du endlich mal dein * und + folgen ungierig (ungreedy) angeben mit ?, haettest du kein Problem mehr. Das du hier mit eregs weiterkommt ist zwar auch richtig, aber absolut kein sinnvoller schachzug, wenn du schon 99% deines pregs hast.

    pregs werden im uebrigen ausfuehrlich im php manual behandelt.

    mfg
     
  11. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Also ich hatte vor es mit pregs zu machen, da die schneller sein sollen.
    Leider weiß ich nicht was du mit "ungreedy" meinst.

    In der Schule hab ich das PHP-Manual durchgewalkt, aber anscheinend den Wald vor lauter Bäumen nicht mehr gesehen.
     
  12. #11 sysdef, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
  13. #12 hehejo, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Das kenn ich schon.. Nur der xhtml 1.0 Validator hat das immer angemeckert.
    War bei mir früher aber auch Standard!

    edit
    Danke, jetzt funktioniert das.
    Ich werde das jetzt mal genau analysieren und hoffentlich rausbekommen was u.A. /si bedeutet.

    Vielen Dank.
     
  14. etuli

    etuli Betrunken

    Dabei seit:
    12.04.2003
    Beiträge:
    278
    Zustimmungen:
    0
    Congrats. Damit oeffnest du dann beliebig Tuer und Tor fuer all jene, die gern benutzerdefinierte HTML Codes verwenden wollen. *kopfschuettel*
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 sysdef, 09.12.2004
    Zuletzt bearbeitet: 09.12.2004
    sysdef

    sysdef variable konstante

    Dabei seit:
    08.11.2004
    Beiträge:
    227
    Zustimmungen:
    0
    Ort:
    Albufeira
    das regex-buch von o'reilly kann ich nur empfehlen. ich hoffe, es hat bei der übersetzung keinen schaden genommen; ich hab es in englisch gelesen.

    -> http://doc.debian-sarge.org/perl/intro/regex.txt

    gruss, sys.

    edit:
    jepp. z.b. für hehejo :D er wird das sicher nur intern für sein eigenes kleines cms auf seiner site verwenden. wenn du bedenkst, was hier alles gepostet wird (autologin für root, etc.), macht das nicht mehr viel aus.
    (btw: du hinterlässt mit deinen aussagen bei mir nen destruktiven eindruck. ein forum sollte jedoch konstruktiv sein. geht dir hier irgendwas gegen den strich?)
     
  17. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    :-)
    Bisher funktioniert es eh nur auf localhost (nutze lampp)..
    Im Netz will das nicht so recht. Vll. haben die auch das PHP nicht mit allem kompiliert.

    Das mit Tür und Tor verstehe ich jetzt nicht so ganz. Aber em Ende soll es auf meiner Homepage Einsatz finden.
     
Thema:

RegExpr mit PHP