the-FoX: Parser und ...

Hallo alle zusammen,

ich hab so meine Probleme mit den regulären Ausdrücken *zugeb* :-(

ich möchte gerne Teile im Text ersetzen. Und zwar geht es darum, dass User Texte schreiben dürfen, HTML aber generell verboten ist. Stattdessen will ich gerne eine eige "Sprache" anbieten, die um einiges beschränkter ist, um Unfug auszuschließen.

erlaubt sein soll fett schreiben usw.
also [b] [/b] ersetzen durch <B> und </B> glaube das bekomm ich noch hin ;-)

aber jetzt das kompliziertere...

wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere Idee hat..) soll daraus
<A HREF="url">linktext</A> werden

und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll möglich sein festzulegen, wo das bild ausgerichtet ist..rechts doer links

kann mir da jemand weiter helfen ?! :-/

Noch eine weitere Frage...

was ist der UNterschied zwischen require und include ?!

ciao the-FoX und..
tausend Dank schon mal

  1. Hoi,

    wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere
    Idee hat..) soll daraus
    <A HREF="url">linktext</A> werden

    Nun, zuerst schauen wir uns mal den String an:

    Eckige Klammer auf, link, Doppelpunkt, Klammer auf, Text, URL,
    eckige Klammer zu. Das in einen RegEx zu formulieren geht recht
    schnell:

    /<(.+,[^,>+)]/

    Jetzt Backticks ausnutzen und in preg_replace einsetzen:

    $text = preg_replace(
      '/<((.+),([^,>+))]/',
      '<a href="\2">\1</a>',
      $text
    );

    und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll
    möglich sein festzulegen, wo das bild ausgerichtet ist..rechts
    doer links

    Schauen wir uns den String mal an:

    Eckige Klammer auf, img gefolgt von einem Doppelpunkt, Klammer auf,
    Text, Komma, right oder left, eckige Klammer zu. Das in einem RegEx
    auszuformulieren ist nicht schwer:

    /[img:([^,]+,(right|left))]/

    Wenn du jetzt die Backticks ausnutzt und das in preg_replace
    einsetzt, kann das so aussehen:

    $text = preg_replace(
      '/[img:(([^,]+),(right|left))]/',
      '<img src="\1" align="\2">',
      $text
    );

    was ist der UNterschied zwischen require und include ?!

    Nur ein historischer. Frueher wurde 'require' auf jedenfall
    ausgefuehrt, auch wenns in einem if(false) stand.

    Gruesse,
     CK

    1. Danke ;-)
      ist zwar alle sncoh ein wneig kryptisch, aber du hast es ganz gut erklärt..werd mir das mal zu gemüte führen..

      schönen sonntag noch

    2. Hoi,

      wenn man <(linktext,url)> angibt (oder wenn jemand ne bessere
      Idee hat..) soll daraus
      <A HREF="url">linktext</A> werden

      Nun, zuerst schauen wir uns mal den String an:

      Eckige Klammer auf, link, Doppelpunkt, Klammer auf, Text, URL,
      eckige Klammer zu. Das in einen RegEx zu formulieren geht recht
      schnell:

      /<(.+,[^,>+)]/

      Jetzt Backticks ausnutzen und in preg_replace einsetzen:

      $text = preg_replace(
        '/<((.+),([^,>+))]/',
        '<a href="\2">\1</a>',
        $text
      );

      und genau dasselbe bei Bildern [img:(bildurl,right)] also es soll
      möglich sein festzulegen, wo das bild ausgerichtet ist..rechts
      doer links

      Schauen wir uns den String mal an:

      Eckige Klammer auf, img gefolgt von einem Doppelpunkt, Klammer auf,
      Text, Komma, right oder left, eckige Klammer zu. Das in einem RegEx
      auszuformulieren ist nicht schwer:

      /[img:([^,]+,(right|left))]/

      Wenn du jetzt die Backticks ausnutzt und das in preg_replace
      einsetzt, kann das so aussehen:

      $text = preg_replace(
        '/[img:(([^,]+),(right|left))]/',
        '<img src="\1" align="\2">',
        $text
      );

      soweit so gut...einzeln funktioniert es ...auch wenn ich erst das mit [img:()] benutze und dann [link] aber wehe ich benutze erst <()> und dann [img:()] dann gehts nciht =o((

      vieleicht kannst du mri ncohmals kurz helfen ?!