[php] preg_replace_callback Problem

vquicksilver

Mitglied
Ich habe folgendes Szenario. Ich habe eine BBcode Funktion mit der ich per bbcode aus meiner Galerie ein bild in meinem Text einfügen und ausgeben kann. Per klick öffnet sich dann ein neues Fenster und das Bild wird angezeigt.

Die Funktionen:
PHP:
<?php

function bbthumb($pic)
{
$picture ="<a href=\"pic.php?pic=org&amp;id=".$pic["1"]."&amp;popup=2\" onclick=\"return popup('pic.php?pic=org&amp;id=".$pic["1"]."&amp;popup=2')\"><img src=\"pic.php?pic=thumb&amp;id=".$pic["1"]."\" alt=\"\" style=\"border: 3px solid #c0c0c0;\" /></a>";

return $picture;
}

function bbcode($string)
{
..
.
// BBcode Thumbnail
$string = preg_replace_callback("#\[bbthumb=(.*?)\]#","bbthumb",$string);

return $string;
}
?>

Der Bbcode:
Code:
[bbthumb=51]

Nun wird halt das bild mit der Id als Thumbnail angezeigt und per Klick öffnet sich ein Neues Fenster mit dem Bild in Originalgrösse. Das funktioniert alles wunderbar.

Nun zu meinem Problem. Ich möchte in dem bbcode irgendwie z.b. So [bbthumb=51,left]
Optional ein Float wert mit übergeben. Das ich wenn ich hinter dem 1. wert eine position wie left, right oder so angebe oben bei Style noch z.b. ein float:left; eingefügt wird.

Kann mir da jemand helfen?

Vielen Dank
 
Probier mal Folgendes:
PHP:
function bbthumb( $matches )
{
	$picId = $matches[1];
	$float = ( $matches[2] == 'left' || $matches[2] == 'right' ) ? $matches[2] : null;
	return '<a href="pic.php?pic=org&amp;id='.$picId.'&amp;popup=2" onclick="return popup(this.href)"><img src="pic.php?pic=thumb&amp;id='.$picId.'" alt="" style="border: 3px solid #c0c0c0;'.(!is_null($float) ? 'float:'.$float : '').'" /></a>';
} 

…

// BBcode Thumbnail 
$string = preg_replace_callback('#\[bbthumb=([1-9][0-9]*)(?:,(left|right))?\]#', 'bbthumb', $string);
 
Ja, dass ist eine Ellipse. Nur leider zerhaut das Forum dieses Zeichen – warum auch immer.
 
Ja funktioniert :) Super Danke dir ;) nun muss ich noch mein css hinbekommen.. weil das dann irgendwie das layout sprengt. Liegt irgendwo am div.
 
Zurück