RegEx innerhalb einer Funktion

Hey,

arbeite momentan viel mit RegEx und komm jetzt nicht weiter. Hab sowas wie BB-Code nachgebaut und häng jetzt fest.

Mit soll ein Bild mit 25%iger Größe (1000x1000 -> 250x250) eingefügt werden. Habe zuerst mit width/height=“25%” gearbeitet, aber das waren 25% des Bildschirms. Jetzt wollte ich das mit getimagesize regeln, aber das ist auch schwerer als gedacht…

Hier mal der Code (verkürzt):[code]$bb = ‘@[img](.*?)[/img]@is’;
$html = ‘<img src="…/foo/bar/$1" width="’.(getimagesize("$1")[0]*1/4).’" height="’.(getimagesize("$1")[1]*1/4).’" />’;

preg_replace($bb,$html);[/code]
Daraus resultiert aber nur “Warning: getimagesize($1) [function.getimagesize]: failed to open stream: No such file or directory” (x2).

Würde mich sehr für Hilfe freuen. :confused:

Gruß, DMan

getimagesize wird in deinem Code zu dem Zeitpunkt ausgeführt, wo du den Wert für $html zuweist – das „wartet“ selbstverständlich nicht, ob danach vielleicht noch ein preg_replace kommt. (Warum sollte es auch?)

Du brauchst preg_replace_callback, wenn du Funktionen auf die Matches eines regulären Ausdrucks anwenden willst.

Ich würde bei deinem Vorhaben aber eh eher mit “max-height” und “max-width” arbeiten…
Wenn es darum geht ein Bild nicht in Voller Größer anzuzeigen, dann i.d.R. weil es sonst zu groß wäre, also sollte man auch nicht in % arbeiten sondern mit einem max wert in pixeln. So bleiben mini Bilder im Original und erkennbar, und riesige können nie das Design sprengen.

Ok, danke für den Hinweis. :slight_smile:

[quote=“White-Tiger”]Ich würde bei deinem Vorhaben aber eh eher mit “max-height” und “max-width” arbeiten…
[/quote]
Einfach per CSS definieren?

img { max-height: 200px; max-width: 200px; }

Vielen Dank. :smiley:

[quote=“DManstrator”][]
Einfach per CSS definieren?
[][/quote]z.B. Wobei du es nicht generell für alle img’s machen solltest sondern eher für die innerhalb des Containers wo sie Verwendung finden^^
Oder pack ne class dran^^

[quote=“White-Tiger”]z.B. Wobei du es nicht generell für alle img’s machen solltest sondern eher für die innerhalb des Containers wo sie Verwendung finden^^
Oder pack ne class dran^^[/quote]
Brauch ich nicht, da diese eine Seite nur solche Bilder enthält und keine anderen. Falls aber, werd ich es mit [class=“XXX”] erweitern. :slight_smile:

Vielen Dank. :smiley: