nach preg_replace() Werte in Function nutzen

?

Reden wir aneinander vorbei, oder irrst du dich vielleicht ?!

Es geht mir ja darum, dass die imageID bei der WHERE Klausel eingebaut ist, damit er die Daten des Bildes ausließt (Größe, url usw.)

Daher muss er ja die ID haben...
Und unten werden diese Werte für das "ersetzen" Template zugänglich gemacht.
 
Hallo...

Ich habe die letzten Tage ein wenig weiter probiert usw...
Dabei hatte ich bei einer anderen Function das gleiche Problem, wie mit den bildern.

Das Problem liegt einfach darin, dass die Function nicht in einer Function aufgerufen wird.
Wenn ich z.B. hier meinen Code nehme...

PHP:
	$content = preg_replace("/<--(?:\|(left|right)\|--)?BILD([1-9][0-9]*)-->/si", insert_image('\\2','\\1'), nl2br($aktuelles['content']));

Dann fehlt vor insert_image z.b. ein echo bzw. print...
Es geht also schon, nur wird die Function nicht ausgeführt.

Noch etwas...

Macht es einen Unterschied, ob ich ein Functionen-Ergebnis mit return() oder echo() aufrufe ?

Liegt der Unterschied nur daran, dass bei echo() die direkt Ausgabe erfolgt und bei return() nur mit vorgesetztem echo() ?

Danke
 
Ok, danke für die Links.
Ich habs nun etliche mal probiert und schaffe es einfach nicht.

Ich bitte euch, mir zu helfen Hier noch einmal jeder Code der damit zu tun hat.

Aufruf

PHP:
$content = preg_replace("/<--(?:\|(left|right)\|--)?BILD([1-9][0-9]*)-->/si", insert_image('\\2','\\1'), nl2br($text['content']));

Funktion

PHP:
function insert_image($imageid, $align)
{
	global $style;
	
	$get = "SELECT id, url_thn, url_full FROM bilder WHERE (id = '$imageid')";
	$get_data = mysql_query($get);
	$image = mysql_fetch_array($get_data);
	
	$size = getImageSize($image['url_full']);
	
	$image_link = "javascript:win('./popup.php?show=image&id=".$image['id']."','width=".$size[0].",height=".$size[1]."');";
	$image_url = $image['url_thn'];
		
	
	eval("\$template_file = \"".addslashes(template("imageinsert_".$align,$style))."\";");
	$imagecode = stripslashes($template_file);


	return $imagecode;
}

Soweit ich es heraus gefunden habe, werden die gegeben Werte in der Funktion nicht anerkannt um verarbeitet zu werden.

Danke für jede Hilfe !
 
Ich weiß zwar immer noch nicht genau, was diese eval()-Geschichte soll, aber probier mal Folgendes:
PHP:
function insert_image($imageid, $align)
{

	global $style;

	$query = '
		SELECT
		        `url_thn`,
		        `url_full`
		  FROM
		        `bilder`
		  WHERE
		        `id` = '.$imageid.'
		';
	$result = mysql_query($query)
		or die(mysql_error());
	$data = mysql_fetch_array($result, MYSQL_ASSOC)
		or die(mysql_error());

	$imageInfo = getImageSize($data['url_full']);

	return '<a href="./popup.php?show=image&amp;id='.$image['id'].'" target="_blank" onclick="return !window.open(this.href, this.target, \'width='.$imageInfo[0].', height='.$imageInfor[1].'\')" style="float:'.$align.'"><img src="'.$data['url_full'].'"></a>';

}
 
Erst einmal THX für deine Antwort um diese Uhrzeit :)

Zu deinem Code. Ich habe ihn so übernommen und auch versucht zu verändern, aber weder vorher noch nachher geht es.

Es kommt einfach zu keiner Ausgabe des Inhaltes. Hast du "noch" eine Idee?

Zu eval():

Ich nutze Templates, die in der sql tabelle gespeichert sind. Durch eval() ermögliche ich mir, dass ist $var als {$var} in den Templates einbauen kann ohne Probleme. :)

Ich hoffe das erklärt es dir ein wenig...

Ich habe daher immer "align" mit dran gehangen, weil ich 3 verschiedene Templates habe mit jeweils anderen codes. :)

Danke
 
Guten Morgen!

Doch sicher ist mit der Unterschied klar, nur wird absolut nichts ausgegeben.
Weder etwas aus der Funktion, noch der String, in dem alle Inhalte sind.
 
Nehmen wir an, ich habe ein Newsscript in dem ich per Klick (JS) ein Bild auswählen kann und im <textarea> einen Wert einfügt.

Ich klicke auf Bild 1511, es wird "<--|left|--BILD1511-->" in die textarea eingefügt.

Nun habe ich eine Ausgabeseite in dem der komplette Content ausgegeben werden soll (inkl. <--|left|--BILD1511-->, die es zu ersetzen gilt).

Durchlaufen tue ich den Content mit folgendem Code

PHP:
$content = preg_replace("/<--(?:\|(left|right)\|--)?BILD([1-9][0-9]*)-->/si", insert_image('\\2','\\1'), nl2br($news['content']));


insert_image() hat folgenden Code:

PHP:
function insert_image($imageid, $align)
 {
 	global $style;
 	
 	$get = "SELECT id, url_thn, url_full FROM bilder WHERE (id = '$imageid')";
 	$get_data = mysql_query($get);
 	$image = mysql_fetch_array($get_data);
 	
 	$size = getImageSize($image['url_full']);
 	
 	$image_link = "javascript:win('./popup.php?show=image&id=".$image['id']."','width=".$size[0].",height=".$size[1]."');";
 	$image_url = $image['url_thn'];
 		
 	
 	eval("\$template_file = \"".addslashes(template("imageinsert_".$align,$style))."\";");
 	$imagecode = stripslashes($template_file);
 
 
 	return $imagecode;
 
 }

$imagecode = ist das Template mit dem Code für das thumbnail

Ich hoffe du meintest es so, oder doch wie ich "deinen Code" wende ?!

Danke für deine Hilfe!
 
Zurück