kostenloser Webspace werbefrei: lima-city


RegEx für custom BB Code

lima-cityForumDie eigene HomepageHTML, CSS & Javascript

  1. Autor dieses Themas

    m****r

    Tag,

    ich hasse RegEx einfach. Kann damit nichts anfangen - und trotzdem muss ich gerade mal wieder für einen eigenen BB-Code eine RegEx erstellen - was ich natürlich wieder nicht hinkriege. RegEx ist nicht mein Ding. Wie muss eine RegEx aussehen, damit ich
    den String "[IMG34]" finde? Wobei 34 durch alle möglichen Zahlen ersetzt werden kann. z.B. auch [IMG57].

    Habs jetzt hiermit probiert:

    $test = preg_match($text,"/\[IMG[0-9]{1,3}\]/");


    Aber das funktioniert nicht. Und wie soll ich das ganze dann eigentlich ersetzen? Bei preg_replace kann ich doch als $replacement nur eine feste Variable angeben also beispielsweise ersetze ich [IMGXX] immer mit <img src="uploads/2.jpg" />, ich möchte aber, dass dort auch das XX also die Zahl eingebunden wird. Wie mache ich das?

    Vielen Dank.

    Beitrag zuletzt geändert: 26.6.2012 13:08:33 von midwar
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. g****e

    http://php.net/manual/de/function.preg-match-all.php
    Damit kannst du nach allen IMGXX suchen, sie dir merken, und dannach mit einer reihe von str_replace die Dinger ersetzen. Damit sollte das Problem denk ich mal gelöst sein ;-)

    Liebe Grüße
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Das was du suchst:
    $bbcode = dein Text mit bbcodes
    $pattern = '/\[IMG([0-9]{1,3})\]/i';
    $replacement = '<img src="uploads/\1.jpg" />';
    $result = preg_replace($pattern, $replacement, $bbcode);
    echo($result);
    ungetestet...
  5. Autor dieses Themas

    m****r

    Dann müsste es genau so funktionieren:

    preg_match_all("/\[IMG([0-9]{1,3})\]/i",$text,$result);
                   for($j=0;$j<count($result);$j++) {
                        $num = $result[$j][1];
                        $replacement = '<img src="uploads/' . $num . '.jpg">';
    				preg_replace("/\[IMG([0-9]{1,3})\]/i",$replacement,$text);
    			}
                   echo $text;


    Tut es aber nicht...
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    midwar schrieb:
    Dann müsste es genau so funktionieren
    Das hast du wohl falsch verstanden... mein Code macht in den 5 Zeilen alles, da brauchst du nichts mehr dran rumpfuschen!

    Also für dich verständlich:
    <?php
    header('content-type: text/plain');
    
    $bbcode = 'dein Text mit bbcodes und einem [IMG2] als Bild sowie noch weiteren [IMG42]';
    $pattern = '/\[IMG([0-9]{1,3})\]/i';
    $replacement = '<img src="uploads/\1.jpg" />';
    $result = preg_replace($pattern, $replacement, $bbcode);
    echo($result);
    Das gibt den Text in
    $bbcode
    so aus, dass ale
    [IMGxx]
    durch die entsprechenden
    <img>
    -Tags ersetzt werden.

    Die Ausgabe:
    dein Text mit bbcodes und einem <img src="uploads/2.jpg" /> als Bild sowie noch weiteren <img src="uploads/42.jpg" />
  7. Autor dieses Themas

    m****r

    hackyourlife schrieb:

    $bbcode = 'dein Text mit bbcodes und einem [IMG2] als Bild sowie noch weiteren [IMG42]';
    $pattern = '/\[IMG([0-9]{1,3})\]/i';
    $replacement = '<img src="uploads/\1.jpg" />';
    $result = preg_replace($pattern, $replacement, $bbcode);
    echo($result);[/code]Das gibt den Text in
    $bbcode
    so aus, dass ale
    [IMGxx]
    durch die entsprechenden
    <img>
    -Tags ersetzt werden.


    Interessant, ich hatte deinen Code überflogen und habe nur $replacement = '<img src="uploads/\1.jpg" />'; gesehen, weswegen ich dachte, dass ALLE Treffer, die so in meinem Text gefunden werden durch 1.jpg ersetzt werden, was ich ja nicht wollte. Deswegen hab ich dann mein Ding von oben mit der for Schleife gebaut. Wusste nicht, dass das auch so geht. Danke!
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    midwar schrieb:
    ich hatte deinen Code überflogen und habe nur $replacement = '<img src="uploads/\1.jpg" />'; gesehen...
    Dabei kommt es auf das
    \1
    an. Das steht für eine Backreferenz...
    Alles was in den runden Klammern im Pattern steht wird dann dort eingefügt, also die Zahl.
  9. 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!