kostenloser Webspace werbefrei: lima-city


Text innerhalb eines BBCodes nicht matchen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Moin,

    ich stehe mal wieder vor einem Regex-Problem. Generell geht es darum, eine URL in einem String zu matchen:

    https?://(?:.+?\.)?dailymotion\.com/video/[A-Za-z0-9]+


    Das funktioniert auch. Das funktioniert aber auch dann, wenn sich diese URL innerhalb eines BBCodes befindet, was es wiederum nicht soll.

    Ich möchte aus folgendem Beispiel die URL http://www.dailymotion.com/video/test4 matchen, alle Anderen jedoch nicht:

    [tagx='http://www.dailymotion.com/video/test1']http://www.dailymotion.com/video/test2[/tagx] | [tagy]Hello http://www.dailymotion.com/video/test3 World[/tagy] | [tagz]Hello World[/tagz] http://www.dailymotion.com/video/test4


    Wie stelle ich das an? Ich habe es bereits mit einer Kombination aus lookbehind und lookahead probiert, jedoch erfolglos.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wie wärs, wenn du alle BB-Tags entfernst? Dann kannst du auf das Ergebnis dein RegEx anwenden und du bekommst nur die eine URL. Ansonsten sind RegEx für / in Verbindung mit BBCodes eher ungeeignet…
  4. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Das wäre in meinem Falle etwas schlecht. Grundlegend geht es nämlich darum, die gefundenen Ergebnisse mit einem anderen BBCode einzuschließen, so soll aus

    [tagx='http://www.dailymotion.com/video/test1']http://www.dailymotion.com/video/test2[/tagx] | [tagy]Hello http://www.dailymotion.com/video/test3 World[/tagy] | [tagz]Hello World[/tagz] http://www.dailymotion.com/video/test4


    das werden:

    [tagx='http://www.dailymotion.com/video/test1']http://www.dailymotion.com/video/test2[/tagx] | [tagy]Hello http://www.dailymotion.com/video/test3 World[/tagy] | [tagz]Hello World[/tagz] [xxx]http://www.dailymotion.com/video/test4[/xxx]


    Da es sich hier im Forenbeiträge handelt, kann ich die bestehenden Tags nicht entfernen. Aber ich darf die Ersetzungen auch nur bei "freistehenden" URLs durchführen.
  5. ggf hilft dir das hier weiter, hat ein gleiches problem.

    http://stackoverflow.com/questions/7695110/link-unlinked-urls-bbcode-regex
  6. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Das sieht zwar nach Overkill aus, tut aber zumindest bei URL-BBCodes, was es soll. Schade, dass lookaheads und lookbehinds eine feste länge besitzen müssen :/

    Ich habe es jetzt testweise mal so:

    (?<!(\[\/))


    Vielleicht reicht das schon :) Danke auf jeden Fall.

    EDIT:

    Okay, das geht leider nicht. Also müsste ich die BBCodes, in denen die Ersetzung nicht durchgeführt werden soll, manuell hinzufügen. Aber selbst dafür scheine ich zu blöd:

    lookbehind assertion is not fixed length


    -->

    (?<!(\[\/url\]|\[\/quote\]|\[\/url=))


    Beitrag zuletzt geändert: 2.6.2013 18:05:01 von fabo
  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!