Ik heb een pagina waarin een php script uitgevoerd word en html naar de bezoeker gebracht word. Door [*u*] in een tekst te zetten, eventueel meerdere keren, komt hier de gebruikersnaam te staan. Tenminste, dat is de bedoeling, maar hoe doe ik dat??
Het is dus een pagina waar [*u*] staat en door simpelweg een code bovenaan te plaatsen word deze vervangen door een eigen waarde. welke in een var staan.
Ik weet dat het kan, aangezien ik een eigen code heb gemaakt welke ik helaas niet meer in het bezit heb, die het kon.
Wanneer je het niet begrijpt zeg het dan even, dan kan ik kijken of ik het anders kan formuleren.
Dat lukt niet, aangezien je niet de data die handleOutput("data") je niet verwerkt, waardoor ik een lege pagina krijg. Maar dit is het uiteindelijke script:
@Quicky
Dat zal niet werken. Volgens mij klopt de regex niet (niet getest, maar zo ziet het er wel uit) en waar wil jij $varUsername vandaan halen? Bedoel het wordt nergens binnen de functie gedefineerd. Zal dus niet werken. Ook kan je voor dit natuurlijk beter str_replace gebruiken in plaats van een regex, want we hoeven geen regex speciafieke dingen te gebruiken.
<?php
// Een functie om de titel van je pagina mee aan te geven
function setVar($sKey, $sValue)
{
// Ik kan begrijpen dat je de $GLOBALS variable niet kent,
// hieronder heb ik daarom een link geplaatst daar wordt deze variable uitgelegd.
// http://nl3.php.net/manual/en/reserved.variables.php#reserved.variables.globals
// Bestaat de global variable var_storage nog niet? maak hem dan aan.
if (!isset($GLOBALS['var_storage']))
{
$GLOBALS['var_storage'] = array();
}
$GLOBALS['var_storage'][$sKey] = $sValue;
}
// De functie die alle HTML van de pagina als argument mee krijgt,
// omdat we hem hebben meegegeven aan de ob_start functie.
// ob_start slaat de output (zoals HTML maar ook bijv. witruimtes) op in het geheugen,
// zo kun je er later nog wat op uitvoeren (zoals wij nu doen).
function handleOutput($sOutput)
{
// Vervangt [*key*] in het document voor de juiste waarde.
$aSearch = array();
foreach ($GLOBALS['var_storage'] as $sKey => $sValue)
{
$aSearch[] = '[*'.$sKey.'*]';
$aReplace[] = $sValue;
}
return str_replace($aSearch, $aReplace, $sOutput);
}
ob_start('handleOutput');
setVar('u', 'werkt');
?>
<html>
<head>
<title>Website</title>
</head>
<body>
<div id="content">
[*u*]
</div>
</body>
</html>
<?php
// Weergeef de in het geheugen opgeslagen output
ob_end_flush();
?>
<?php
// Een functie om de titel van je pagina mee aan te geven
function setVar($sKey,$sValue)
{
// Ik kan begrijpen dat je de $GLOBALS variable niet kent,
// hieronder heb ik daarom een link geplaatst daar wordt deze variable uitgelegd.