preg_match erkennt einen BBCode nicht

  • Hallo, ist ne Weile her seitdem ich so auf dem Schlauch stand, aber ich versteh da gerade etwas nicht.

    Es liegen einige Text vor, der Einfachheit halber, reduziere ich diesen auf den folgenden:

    Zitat

    [description]
    Dies ist eine Beschreibung [/description]

    Mit folgendem Code wollte ich diese Beschreibung auslesen

    PHP
    $script['description'] = preg_match('#\[description\](.*?)\[/description\]#', $script['description'], $findings_description);

    Problem bei der ganzen Sache: $findings_description ist immer leer..

    Es muss an dem Zeilenumbruch liegen.., da es ohne erkannt wird

    Folgender Code hilft auch nicht:

    PHP
    $script['description'] = preg_match('#\[description\](.|\n*?)\[/description\]#', $script['description'], $findings_description);


    oder

    PHP
    $script['description'] = preg_match('#\[description\](.*?)\[/description\]#s', $script['description'], $findings_description);

    2 Mal editiert, zuletzt von No0ob (29. Januar 2009 um 22:37)

  • Was bringt preg_match_all? Damit ging das auch nicht.
    Und / muss man nicht escapen, und das (comment) macht auch keinen Sinn =/
    Bedeutet i nicht, dass Groß+Kleinschriebung einfach nicht beachtet wird?
    Irgendwie hat mich dein Post nur noch verwirrt =/

  • Ich weiss zwar noch nicht genau warum es so funktioniert, weil mich das ^ irritiert, aber es scheint zu klappen.

    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

  • mit preg_match_all bekommst du alle vorkommen die er findet.

    was es bringt oder ob es etwas macht das bei mit der / escapt ist weiss ich nicht, funktioniert so einfach. ;) ist schon älter der regex

    das (comment) hat einen Sinn ;) - du bekommst dann seperat den namen des Tags, in dem Beispiel nicht wirklich notwendig.

    i bedeutet case insensitive, also das er nicht auf gross- kleinschreibung achtet, hat den vorteil das auch [Comment] oder [DescriptioN] etc erkannt werden.

  • Da ich aber der einzige bin, der diese BBCodes verwendet und nicht auf dumme Usereingaben achten muss, funktioniert meine Lösung einwandfrei. Desweiteren, gibt es auch nur einmal [description], von daher bin ich zwar für den Rat dankbar, habe es allerdings, wie schon erwähnt, selbst lösen können.