nach preg_replace() Werte in Function nutzen

Hallo und danke für deine Antwort.

Es geht immernoch nicht ...:confused:

Aber es scheint noch nicht mal an deinen Hilfen zu liegen, sondern an der php function.
Ich habe die beiden übergebenen Werte ge- echo t :)

Raus kommt einfach nur \2 \1 oder eben \\2 \\1.

Die Funktion beginnt so:

PHP:
function insert_image($imageid, $align)
{

}

Hast du da eine Idee? Normalerweise sollte es doch einfach gehen...

BTW: Ich habe die functions in einer extern php Datei, falls es eine Rolle spielen sollte. :)

Danke
 
Also bei mir funktioniert nachfolgendes Beispielskript einwandfrei:
PHP:
<?php

	function insert_image($imageid, $align)
	{
		$return = sprintf(
			'<img src="%s"%s>',
				$imageid,
				!empty($align) ? ' align="'.$align.'"' : null
			);
		return $return;
	}

	$string = 'foo <--|left|--BILD1153--> bar';
	echo preg_replace('/<--(?:\|(left|right)\|--)?BILD([1-9][0-9]*)-->/si', insert_image('\2', '\1'), $string);

?>
 
Mmh, ich poste dir hier mal meinen kompletten 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 = $image['id'];
	$image_url = $image['url_thn'];
		
	
	eval("\$template_file = \"".addslashes(template("imageinsert_".$align,$style))."\";");
	$imagecode = stripslashes($template_file);


	return $imagecode;

}

Alles sehr sehr komisch, wie ich finde...
 
Wozu die Datenbankabfrage, wenn doch sowieso nur die Variablen $align und $style in die Verarbeitung des Rückgabewertes eingebunden werden – oder irre ich mich in diesem Punkt? Was genau soll die Funktion denn machen?
 
Dem Benutzer ist die möglichkeit gegeben, per Klick ein Bild hinzuzufügen in einem <textarea> Feld. Unter jedem Bild (thumbnail) befinden sich 3 Pfeile: Linksbündig | Zentriert | Rechtsbündig einfügen.

Dadurch entsteht folgender Code: <--|left|--BILD1153-->

Ich ich muss sagen, ich habe den Code ein wenig "unvollständig" kopiert.
PHP:
$image_link = $image['id'];

$image_link beinhaltet normalerweise eine URL für das POPUP. :rolleyes:

Soweit ist es eben so, dass durch die gesetzte ID (<--|left|--BILD1153-->) die ID ermittelt wird und eben "left" die Art des Templates bestimmt.

BTW: Ich speichere alle Bilder auch noch in einer DB ab, damit ich einen besseren Überblick erhalte. Soviel zu deiner Query-Frage :)

So entsteht eben der ganze wirwar ^^

Ich hoffe du blickst nun ein wenig mehr durch :)

Danke!
 
Dass anhand der Parameter einr Grafikelement-Deklaration erzeugt werden soll, war mir auch vorher klar. Nur verstehe ich nicht, wieso eine Datenbankabfrage stattfindet, wenn die Daten der Abfrage garnicht – oder zumindest nicht für mich ersichtlich – verarbeitet werden.
 
$imageid = WHERE (id = '$imageid')
$align =
Code:
template("imageinsert_".$align,$style)

Sollte doch ersichtlich sein, oder ? ;)

Und mit Hilfe von:

Code:
 eval("\$template_file = \"".addslashes(template("imageinsert_".$align,$style))."\";");
	$imagecode = stripslashes($template_file);

Werden alle Werte für das Template nutzbar...
 
Wenn du die Funktion von der Rückgabe aus rückwärts aufrollst, wirst du merken, was ich meine: Zurückgegeben wird der Wert der Variable $imagecode, der wiederum eine von Fluchtzeichen bereinigte Version des $template_file-Variablenwerts ist. Dieser Wert entstammt (auf übrigens unötig komplizierte Weise) der template()-Funktion, die als ersten Parameter mit der Verkettung aus „imageinsert_“ und dem $align-Variablenwert sowie als zweiten Parameter mit dem Wert der globalisierten Variable $style gefüttert wurde. Das war’s, weitere Faktoren spielen keine Rolle – zumindest nicht offensichtlich.
 
Ist es denn überhaupt das, was du möchtest? Denn die Bild-ID geht überhaupt nicht in die Generierung des Rückgabewerts ein.
 
Zurück