regexp für [img][/img]

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von moses_78, 03.02.2006.

  1. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    tach zusammen,

    wie der titel schon sagt, möchte ich ein suchmuster, das bei urls in
    [img][/img]-tags matcht, bei whitespaces in den url's jedoch nicht
    matcht (sch*** wort, ich weiss).

    so weit bin ich schon:
    Code:
    /\[img\](.*?)\[\/img\]/i
    damit es whitespaces ignoriert, muss da jedoch noch irgendwo
    ein ^[^s] oder soetwas ähnliches rein, ich weiss jedoch nicht
    genau wohin.

    ich bin hier am verzweifeln, kennt ihr nebenbei noch ein gutes
    tutorials zu regexps??

    gruß moses :)
     
  2. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
  3. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    sorry hatte deine Frage zuerst falsch verstanden:

    so funktioniert das wie du willst:
    Code:
    /\[img\](\S*?)\[\/img\]/i
    
     
  4. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    funktioniert! vielen dank :)

    dann ist "S" also ein negiertes "s" ?!? ich dachte, ich müsste eine eigene
    zeichenklasse erzeugen, und diese dann durch ein caret negieren....

    hätte noch jemand was zu meiner zweiten frage? ;)
     
  5. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    hast du dir die beiden Links mal angeschaut?
    Ist zwar kein Tutorial wie gefordert, aber ne gute Doku.
    Und unten sind meistens auch noch gute Beispiele von Usern.
     
  6. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    stimmt, die dokus von php.net sind gut, aber ich wollte reguläre ausdrücke
    eigentlich verstehen, und nicht nur abkupfern. am liebsten wäre mir eine
    wirklich idiotensichere step-by-step-anleitung.
     
  7. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    hmm, hab ich bisher noch nirgends gesehen.
    Hast du ein generelles Verständnisproblem von regulären Ausdrücken oder eher bestimmte Probleme damit?
    Vielleicht kann ich dir das erklären.
     
  8. moses_78

    moses_78 Thread Starter MacUser Mitglied

    Beiträge:
    1.322
    Zustimmungen:
    22
    MacUser seit:
    08.04.2005
    tendenziell ersteres. das bekomme ich aber auch noch hin, selbstverständlich
    trotzdem vielen dank für dein angebot.
     
  9. Gunter_S

    Gunter_S MacUser Mitglied

    Beiträge:
    150
    Zustimmungen:
    3
    MacUser seit:
    15.03.2004
    vielleicht noch ein kleiner Tipp, was im ersten Moment für Ratlosigkeit sorgen kann.

    Es gibt zwei generell unterschiedliche Syntaxen von regulären Ausdrücken in PHP.
    Zum einen die Perl kompatible in z.b. preg_replace() und die "andere" z.b. in ereg()

    In der Perl kompatiblen braucht man ein Zeichen, dass den regulären Ausdruck einleitet und beendet. Das war in deinem Beispiel das /.
    Die Syntax sieht dann so aus "/regulärer Ausdruck/Modifikatoren". Innerhalb des regulären Ausdruck darf dann kein / mehr verwendet werden. Falls du dennoch eins benötigst, musst du das mit einem \ entschärfen.

    In der anderen Syntax (ereg()) gibt es keine Modifikatoren und du darfst kein ? hinter einem * oder + verwenden.

    Falls du dich fragst wofür überhaupt das Fragezeichen in diesem Zusammenhang steht: Es weist * an, die kürzeste Möglichkeit zu finden.
    Als Beispiel:
    lasse deinen regulären Ausdruck auf
    Code:
    [img]link[/img][img]link[/img]
    los und der Ausdruck wird zweimal matchen. (Also so wie gewünscht)

    Lässt du dagegen das ? weg, also nur \S* statt \S*?, dann wird der reguläre Ausdruck nur einmal matchen und der Teil der Klammer enthält "link[/img]link". Da ja [b]*[/b] für alle Zeichen gilt.

    Gunter
     
  10. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
Die Seite wird geladen...
Ähnliche Themen - regexp [img][ img]
  1. mores
    Antworten:
    13
    Aufrufe:
    1.330
  2. blalalama
    Antworten:
    29
    Aufrufe:
    1.417

Diese Seite empfehlen