php preg_replace mit funktion ersetzen

L

lacie

Hallo zusammen

ich habe eine Funktion die parse_bb($bb);
diese ersetzt ein [img]iwas[/img] zu <img src="iwas">

Code:
$bb = preg_replace('#\[img\](.*?)\[/img\]#s', '<img src="$1">', $bb);

nun will ich noch zusätzlich eine funktion basteln die schaut ob das Bild nicht zu groß ist.

diese lautet:

Code:
Function f_image($url){
	list($w, $h) = getimagesize($url);
	if (($h >= 600) OR ($w >= 600)){
		echo "<br><i>Can not show image,because image is to big.<br>";
		echo "<b>View the image <a href='".$url."' target='_blank'>here</a>!</b></i><br>";
	}
}

Sollte selbsterklärend sein..
nun zu meiner frage:

Wie kann ich die beiden funktionen koppeln?
Code:
$bb = preg_replace('#\[img\](.*?)\[/img\]#s', 'f_image($1)', $bb);

funktioniert nicht wirklich, weil er dann einfach f_image und den link ausgiebt..

kann mir jemand nen Denkanstoß geben?
 
Hi,

PHP:
// $bb an funktion übergeben!
function f_image($bb){
    $url = preg_replace('#\[img\](.*?)\[/img\]#s', '<img src="$1">', $bb);
	list($w, $h) = getimagesize($url);
	if (($h >= 600) OR ($w >= 600)){
		echo "<br><i>Can not show image,because image is to big.<br>";
		echo "<b>View the image <a href='".$url."' target='_blank'>here</a>!</b></i><br>";
	}
    return $url;
}

Ich hoffe ich habe deine Absichten korrekt nachvollzogen.
Funktion liefert dann bearbeiteten BB zurück.

/edit: Da ist noch ein grober Denkfehler drinne:
$url enthält dort noch den IMG Tag.
Also dann so:
PHP:
// $bb an funktion übergeben!
function f_image($bb){
    $url = preg_replace('#\[img\](.*?)\[/img\]#s', '$1', $bb);
	list($w, $h) = getimagesize($url);
	if (($h >= 600) OR ($w >= 600)){
		echo "<br><i>Can not show image,because image is to big.<br>";
		echo "<b>View the image <a href='".$url."' target='_blank'>here</a>!</b></i><br>";
	}
    return "<img src=\"".$url."\" />";
}
Funktion gibt nun den kompletten IMG Tag zurück, prüft aber zuvor die Bildgröße.

Gruß tyg3r
 
Zuletzt bearbeitet:
PHP:
Function f_image($url)
{
	$retVal = '';
	list($w, $h) = getimagesize($url);
	if( ($h >= 600) || ($w >= 600) ) {
		$retVal .= "<br><i>Can not show image,because image is to big.<br>";
		$retVal .= "<b>View the image <a href='".htmlspecialchars($url)."' target='_blank'>here</a>!</b></i><br>";
	} else {
		$retVal .= '<img src="'.htmlspecialchars($url).'">';
	}
	return $retVal;
}

$bb = preg_replace('#\[img\](.*?)\[/img\]#se', 'f_image("$1")', $bb);
 
genau so wollte ichs ;D
danke euch beiden

Was das htmlspecialchars angeht.. ich hab die functionen auf das nötigste reduziert um nich iwelche anderen Fragen aufkommen zu lassen..
Trotzdem danke ;)

Gruß lacie
 
Zurück