RegEx für custom BB Code
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
ale
all
bild
code
ding
entsprechenden code
ersetzen
funktionieren
header
http
machen
runden klammern
schleife
string
tag
text
treffer
url
weiteren code
zahl
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
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... -
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... -
midwar schrieb:
Das hast du wohl falsch verstanden... mein Code macht in den 5 Zeilen alles, da brauchst du nichts mehr dran rumpfuschen!
Dann müsste es genau so funktionieren
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
so aus, dass ale$bbcode
durch die entsprechenden[IMGxx]
-Tags ersetzt werden.<img>
Die Ausgabe:dein Text mit bbcodes und einem <img src="uploads/2.jpg" /> als Bild sowie noch weiteren <img src="uploads/42.jpg" />
-
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
so aus, dass ale$bbcode
durch die entsprechenden[IMGxx]
-Tags ersetzt werden.<img>
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! -
midwar schrieb:
Dabei kommt es auf das
ich hatte deinen Code überflogen und habe nur $replacement = '<img src="uploads/\1.jpg" />'; gesehen...
an. Das steht für eine Backreferenz...\1
Alles was in den runden Klammern im Pattern steht wird dann dort eingefügt, also die Zahl. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage