keyword durch eine Funktion ersetzen mit preg_replace

2low

Grünschnabel
Hi erst mal.

Ich hab die Forum suche benutzt und nix passendes gefunden.

Also ich hab kleines problem mit preg_replace,
PHP:
<?php

$var = '<div class="navigation">{{navilinks}}</div>';

function navi() {
	$navi = array(
		0 => 'HOME',
		1 => 'FORUM',
		2 => 'ABOUT',
		3 => 'DOWNLOAD'
	);
	
	foreach($navi as $key => $value) {
		print $value.'<br />';
	}
}

$var = str_replace('/{{navilinks}}/', navi(), $var);

?>

die ausgabe soll so aussehen :
HTML:
<div class="navigation">HOME<br />FORUM<br />ABOUT<br />DOWNLOAD<br /></div>

aber was ich bekomme ist :
HTML:
HOME<br />FORUM<br />ABOUT<br />DOWNLOAD<br /><div class="navigation"></div>

bin auch noch anfänger in PHP also würde mich freuen wenn jemand helfen kann

EDIT ::
sorry nachdem ich diesen post geschrieben hab habe ich genug andere über das problem gefunden
nur mit der forum suche hat es nicht geklappt
 
Zuletzt bearbeitet:
Weil deine Funktion keinen Wert zurückgibt an str_replace, sondern selbst Markup "an den Browser sendet":
PHP:
function navi() {
    $navi = array(
        0 => 'HOME',
        1 => 'FORUM',
        2 => 'ABOUT',
        3 => 'DOWNLOAD'
    );
    
    foreach($navi as $key => $value) {
        print $value.'<br />';
    }
}

Du solltest den Text den du haben willst lieber in einem String speichern und zurückgeben:
PHP:
function navi() {
    $navi = array(
        0 => 'HOME',
        1 => 'FORUM',
        2 => 'ABOUT',
        3 => 'DOWNLOAD'
    );

   $s = ""; // leerer String
    
    foreach($navi as $key => $value) {
        $s .= $value.'<br />';  // das was du wills im String anhängen. ist wie $s = $s . "foo";
    }
    return $s; // den String ausliefern an alle die ihn brauchen ;)
}
 
Vielen dank das war was ich gesucht hab.

es ist mir nicht in den sinn gekommen noch eine variable zu benutzen
danke nochmals
 
Zuletzt bearbeitet:
Zurück