login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[*u*] vervangen door eigen waarde (Opgelost)

Offline funmen - 04/02/2008 18:51
Avatar van funmenNieuw lid 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.

Met vriendelijke groet,
funmen

5 antwoorden

Gesponsorde links
Offline tomie94 - 04/02/2008 18:56 (laatste wijziging 04/02/2008 18:58)
Avatar van tomie94 PHP interesse zoiets:
  1. <?php
  2. $text = preg_replace('#\[u\](.+?)\[/u\]#si','<span style="text-decoration: underline;">\\1</span>',$text);
  3. ?>


Edit: vraag verkeerd begrepen 
Offline Bart - 04/02/2008 18:56
Avatar van Bart PHP expert
  1. <?php
  2. function handleOutput()
  3. {
  4. return str_replace('[*u*]', $varUsername);
  5. }
  6. ?>


en dan bovenaan dat document waar je het wilt vervangen:

  1. <?php
  2. ob_start('handleOutput');
  3. ?>
Probeer dat eens.
Offline funmen - 04/02/2008 19:07
Avatar van funmen Nieuw lid 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:

  1. <?php
  2. function handleOutput($data)//functie maken
  3. {
  4. $varUsername = "Gebruikersnaam";
  5. return str_replace('[*u*]', $varUsername, $data);//[*u*] vervangen
  6. }//einde functie
  7.  
  8.  
  9. ob_start('handleOutput');//functie aanroepen
  10. ?>
Offline Bart - 04/02/2008 19:13 (laatste wijziging 04/02/2008 19:18)
Avatar van Bart PHP expert Je krijgt een lege pagina als je dat script gebruikt wat je nu net veranderd hebt?

Ik was er al van overtuigd dat ik iets vergeten was inderdaad, maar wat wist ik niet. Mijn excuus hiervoor.

EDIT: Ik denk dat ik nu wel het goeie script heb:
Met dank aan Grayen:
  1. <?php
  2. function handleOutput($sOutput)
  3. {
  4. return preg_replace('\\[\\*u\\*\\]', $varUsrname, $sOutput);
  5. }
  6.  
  7. ob_start('handleOutput');
  8. ?>

En wederom bovenaan de pagina waar je de vervanging wilt:
  1. <?php
  2. ob_start("handleOutput");
  3. // rest van je script hieronder:
  4. ?>
Offline Grayen - 05/02/2008 08:07
Avatar van Grayen PHP ver gevorderde @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.

  1. <?php
  2. // Een functie om de titel van je pagina mee aan te geven
  3. function setVar($sKey, $sValue)
  4. {
  5. // Ik kan begrijpen dat je de $GLOBALS variable niet kent,
  6. // hieronder heb ik daarom een link geplaatst daar wordt deze variable uitgelegd.
  7. // http://nl3.php.net/manual/en/reserved.variables.php#reserved.variables.globals
  8.  
  9. // Bestaat de global variable var_storage nog niet? maak hem dan aan.
  10. if (!isset($GLOBALS['var_storage']))
  11. {
  12. $GLOBALS['var_storage'] = array();
  13. }
  14.  
  15. $GLOBALS['var_storage'][$sKey] = $sValue;
  16. }
  17.  
  18. // De functie die alle HTML van de pagina als argument mee krijgt,
  19. // omdat we hem hebben meegegeven aan de ob_start functie.
  20. // ob_start slaat de output (zoals HTML maar ook bijv. witruimtes) op in het geheugen,
  21. // zo kun je er later nog wat op uitvoeren (zoals wij nu doen).
  22. function handleOutput($sOutput)
  23. {
  24. // Vervangt [*key*] in het document voor de juiste waarde.
  25. $aSearch = array();
  26.  
  27. foreach ($GLOBALS['var_storage'] as $sKey => $sValue)
  28. {
  29. $aSearch[] = '[*'.$sKey.'*]';
  30. $aReplace[] = $sValue;
  31. }
  32.  
  33. return str_replace($aSearch, $aReplace, $sOutput);
  34. }
  35.  
  36. ob_start('handleOutput');
  37.  
  38. setVar('u', 'werkt');
  39. ?>
  40. <html>
  41. <head>
  42. <title>Website</title>
  43. </head>
  44. <body>
  45. <div id="content">
  46. [*u*]
  47. </div>
  48. </body>
  49. </html>
  50. <?php
  51. // Weergeef de in het geheugen opgeslagen output
  52. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.245s