[PHP] Funktion Error

hasch

Lt. Commander
Registriert
Sep. 2004
Beiträge
1.067
Folgende Funktion:
Code:
<?php function menu($var)
	{
		$i = 0;
		while($i < 80)
		{
		if($i>0)
			$var = $tpl;
		$tpl = preg_match("/{menu_(.*)}/i", $var, $matches);
		foreach($matches AS $key=>$element)
			${"tpl_$key"} = $element;
		$tpl = str_replace('{menu_', '', $tpl_0);
		$tpl = str_replace('}', '', $tpl);
		$tpl = preg_replace("/{menu_(.*)}/i", $index."?sec=".$tpl, $var);
		$i++;
		}	
		return $tpl;	
	} ?>
Möchte, dass ein Platzhalter {menu_variable} immer wieder (80x) ersetzt wird und dann letztendlich ausgegeben wird, leider wird dieser Platzhalter immer wieder mit dem ersten ersetzten Element ersetzt, warum?
 
Zuletzt bearbeitet:
AW: PHP Funktion Error

Hallo,

warum machst du es dir denn so schwer? ;)
Dazu bietet preg_replace() extra einen Zusätzlichen Parameter "limit" an, mit dem du die maximale Anzahl der Ersetzungen bestimmen kannst.
Oder habe ich jetzt das Problem falsch verstanden? ;)

MfG mh1001
 
AW: PHP Funktion Error

@mh1001
Ja dies ist koerrekt, aber ich möchte, dass Die Variable immer mit einem anderen Wert ersetzt wird, der ergibt sich ja aus {menu_variable}

Z.B. {menu_index} -> index.html?sec=index
{menu_download} -> index.html?sec=download

So sollte das ganze nachher aussehen, aber es bleibt das Problem, dass zum Schluss immer index.html?sec=index steht und nicht mit download,... weiter ersetzt wird.
 
AW: PHP Funktion Error

Ohne es jetzt getestet zu haben sollte es so funktionieren:

PHP:
 <?php
function menu($var)
{
  $tpl = preg_replace("#\{menu_(.*)\}#is", "index.php?sec=\\1", $var, 80);
  
  return $tpl;
}
?>
 
Zuletzt bearbeitet:
AW: PHP Funktion Error

Vielen Dank,
leider wird folgendes ausgegeben:
http://localhost/ngd-systems/index.php?sec=support}
http://localhost/ngd-systems/{menu_index
 
AW: PHP Funktion Error

Probiere es einmal mit einem (.*?) statt dem (.*). ;)
Sollte dies auch nicht klappen, so poste am besten mal einen Beispiel-String, welcher die Funktion durchlaufen soll.

MfG mh1001
 
AW: PHP Funktion Error

Du bist genial das klappt, aber warum, kannst du mir mal bitte kurz erklären, wie deine Anweisung aufgebaut ist, wäre ganz toll.
 
[...]aber warum, kannst du mir mal bitte kurz erklären, wie deine Anweisung aufgebaut ist, wäre ganz toll.
Ja, gerne. ;)

#\{menu_(.*?)\}#is gibt das Suchmuster an. Dabei steht .* für eine beliebige Zeichenkette. Das folgende ? hebt die "Gierigkeit" der Quantifizierer auf. Dies bedeutet, dass immer nach der kleinsten, zutreffenden Zeichenkette gesucht wird. Die Klammern darum bewirken, dass die gefundene Zeichenkette in den Suchpattern gespeichert wird und später dann über \\1 abgerufen werden kann.
Das i und das s legen dann schließlich noch fest, dass nicht zwischen Groß- und Kleinschreibung unterschieden werden soll und der String als einzeilig betrachtet werden soll.


MfG mh1001
 
Zuletzt bearbeitet:
Danke, dein Code hat mir echt weiter geholfen, so kann ich viele weitere Funktionen, z.B. PHP-Code so ersetzen mit diesem kleinen Code erledigen. Vielen Dank. :)
 
Zurück
Oben