BBCode und Imagesizecheck

Gangsterneo

Mitglied
Hallo Liebe Commus,

ich habe ein Gästebuch mit BBPasing und möchte dort bevor er [img][/img] als Bild ersetzt gucken, ob die Bildgröße nicht zu groß ist.

PHP:
function checkimagesize ( $image )
{
		$imagesize = getimagesize($image);
		if (($imagesize['1'] < 1) OR ($imagesize['1'] > 530) OR ($imagesize['2'] < 1) OR ($imagesize['2'] > 530)) {
		return "Bild zu groß oder zu klein"; 
		}
		else {
				return '<img src="$image">';
			}
}

Nun ist aber das Problem.. das ich den Link zum Bild erstmal aus den Text filtern muss....
PHP:
function bbparsing( $bbpars )
{
    $bbpars = preg_replace('/\[img\](.*?)\[\/img\]/', '<img src="$1">', $bbpars);

    return $bbpars;
}

ich habe keine Ahnung wie ich jetzt den "imagelink" zum checken vorher in die funktion bekomme...

Gibt es irgendeine Funktion, die ich z.B so ausführen könnte:

PHP:
function bbparsing( $bbpars )
{
$check = checkimagesize(findewort($bbpars, 'http://*'));
    $bbpars = preg_replace('/\[img\](.*?)\[\/img\]/', '<img src="$1">', $bbpars);

...


Würde mich über eine Antwort sehr freuen!
Danke!
 
Kann mir wer die Funktion näher erklären ich verstehe kein Stück :C

hab bis eben rumprobiert...

also wenn jemand schreibt

Code:
Halloo BLUUUb wie gehts
Nudel Apfel [image]http://blub.de/test.jpg[/image]

Tschuusii [bold]KISS[/bold]
:)

dann wird der text mit bbcode und smilies replaced.
Das t auch alles... doch wenn wer nen bild nimmt was größer als z.B. 500px width ist dann ziehts mein design auseinander.

also will ich vorm replace checken ob im Text ein [img]http://www.tutorials.de/forum/php/php/php/php/ code ist.. die url (IMG) auf größe mit getimagesize überprüfen und dann das bild zulassen oder an der Stelle nur "Bild zu groß" oderso posten.

Vll kann mir ja jemand helfen :C

lG
 
Hi,

ein Aufruf per preg_replace_callback würde so aussehen:

PHP:
$bbpars = preg_replace_callback('\[img\](.*?)\[\/img\]', 'checkimagesize', $bbpars);

Sprich: Du gibst nicht direkt ein Ersetzungsstring an, sondern eine Funktion, die jeden Treffer übergeben bekommt und den entsprechenden Ersetzungsstring zurückgibt.

Dann müsstest Du die Funktion checkimagesize allerdings etwas anpassen, da ein Treffer immer aus einem Array mit dem kompletten Match und allen Matches der Subpatterns besteht. In Deinem Fall befände sich die URL in $image[1].

Du könntest aber auch den Modifier e benutzen, dann kann Deine check-Funktion so bleiben:

PHP:
$bbpars = preg_replace('"\[img\](.*?)\[\/img\]"e', "checkimagesize('\\1')", $bbpars);

LG

Ach übrigens: Du benutzt in Deiner check-Funktion die falschen Indizes. Breite und Höhe stehen in den ersten beiden Arrayelementen, also Index 0 und 1.
 
Zuletzt bearbeitet:
Zurück