kostenloser Webspace werbefrei: lima-city


preg_replace Problem

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    fabo

    fabo hat kostenlosen Webspace.

    Aloha,

    schon wieder dieses blöde Thema :wall: Naja...

    Folgendes:

    ~^(?:<a.*?</a>|\[url.*?\[/url]|\[/?[^]]++]|</?[^>]++>)(*SKIP)(*FAIL)|".$this->exp[1]."$~is


    Funktioniert so weit relativ gut. Bis auf ein Problem;

    Ich möchte mit Hilfe dieses Regex "abk" durch "Abkürzung" ersetzen lassen. Aus irgendwelchen unerschwinglichen Gründen funktioniert das aber nicht:

    Aus

    abk
    ABK
    AbK


    wird

    abk
    ABK
    Abkürzung


    Wie man sieht, funktioniert es weder im lower noch im uppercase, obwohl der Modifier i gesetzt ist.

    preg_replace('~^(?:<a.*?</a>|\[url.*?\[/url]|\[/?[^]]++]|</?[^>]++>)(*SKIP)(*FAIL)|".$this->exp[1]."$~is', $ersetzung, $string);


    Woran liegts?

    EDIT:

    Okay, das Problem ist ein Anderes... Er ersetzt immer nur das letzte Vorkommen im String :wall:

    EDIT:

    Entferne ich ^ und $ kommt logischerweise das raus:

    Abkürzungürzungürzung
    Abkürzungürzungürzung
    Abkürzungürzungürzung


    EDIT:

    Okay, ich habs. Anstatt ^ und $ muss ich \b verwenden :wall:

    Beitrag zuletzt geändert: 8.4.2011 14:03:17 von fabo
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Weiterhin hast du die Anker fehlerhaft positioniert, sie sollten nur im zweiten Teil erscheinen (nach dem |):
    preg_replace('~(?:<a.*?</a>|\[url.*?\[/url]|\[/?[^]]++]|</?[^>]++>)(*SKIP)(*FAIL)|\b'.$this->exp[1].'\b~is', $ersetzung, $string);

    Das `^` am Anfang würde auch nur für den ersten Teil gelten (und ihn damit mehr oder weniger unwirksam machen), das `$` würde nur für den zweiten Teil gelten, also nur die jeweils letzte Occurance ersetzen und auch nur, wenn sie genau am Ende ist (was ja auch passiert ist).

    Beitrag zuletzt geändert: 8.4.2011 16:54:59 von nikic
  4. 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!