login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Te veel keer (Opgelost)

Offline tomie94 - 24/05/2008 16:18
Avatar van tomie94PHP interesse Hallo,

Ik ben bezig met een taal systeem, en daar moet je zulke zinnen in kunnen maken: Hallo, [NAME]([NICKNAME]), dus [NAME] enzo moet aangepast worden, dus ik probeer het volgende:
  1. <?php
  2. function changeBlock($edit, $new, $var)
  3. {
  4. $var = preg_replace("/[".$edit."]/", $new,$var);
  5. return $var;
  6. }
  7. ?>


deze roep ik zo aan:
  1. <?php
  2. $newHello = changeBlock("NAME", "Hier staat naam", $lang['hello']);
  3. echo $newHello;
  4. ?>


$lang['hello'] bevat dus Hallo, [NAME]([NICKNAME]). Als ik dit in m'n browser bekijk staat er Hallo, [Hier staat naamHier staat naamHier staat naamHier staat naam]([Hier staat naamICKHier staat naamHier staat naamHier staat naamHier staat naam]).

Hoe kan dit?

6 antwoorden

Gesponsorde links
Offline Martijn - 24/05/2008 16:40 (laatste wijziging 24/05/2008 16:46)
Avatar van Martijn Crew PHP "Hier staat naam", $lang
weet niet of het een typfout is, maar die komma moet een punt zijn, Verder zie ik niet echt iets wat zou kunnen loopen, maar eerlijk gezegd volg ik je ook niet helemaal

oh, ik volg m n beetje

oke, 1 dubbel heb ik gevonden
NAME en NICKNAME ;)

Dit werkt:
  1. <?php
  2. $lang['hello']="[NAAM]([NICKNAME])";
  3. function changeBlock($edit, $new, $var)
  4. {
  5. $var = str_replace($edit, $new,$var);
  6. return $var;
  7. }
  8.  
  9. $newHello = changeBlock("NAAM", "Hier staat naam", $lang['hello']);
  10. echo $newHello;
  11. ?>
Offline XenoX - 24/05/2008 16:42
Avatar van XenoX Gouden medailleGouden medaille

PHP expert
  1. $var = preg_replace("/\[".$edit."\]/", $new,$var);

Als je het zo probeert?
Offline Ibrahim - 24/05/2008 16:48
Avatar van Ibrahim PHP expert En als je gewoon een template class zoals TemplatePower gebruikt ?

  1. $tpl->assign('NAAM', 'naam van persoon');
Offline darsstar - 24/05/2008 16:52
Avatar van darsstar Nieuw lid in preg_* functies moet je de [ en ] backslashes als je die letterlijkwilt doorgeven aan de functie...
als je dat niet doet ziet de functie de tekens er tussen als waarden (elk teken appart) die vervangen mogen worden...
dus de N, A, M en E worden vervangen door "Hier staat naam"
en daarom staat er onder andere ook nog ICK tussen...

gebruik je dit:
  1. <?php
  2. function changeBlock($edit, $new, $var)
  3. {
  4. $var = preg_replace("/\[".$edit."\]/", $new,$var);
  5. return $var;
  6. }
  7. ?>

dan zal het werken...
Offline Grayen - 24/05/2008 17:23 (laatste wijziging 24/05/2008 17:23)
Avatar van Grayen PHP ver gevorderde Nog beter, gewoon str_replace gebruiken ipv van preg_replace. Je hebt helemaal geen reguliere expressies nodig in die text vervanging.

  1. $var = preg_replace("/\[".$edit."\]/", $new,$var);

=>

  1. $var = str_replace('['.$edit.']', $new, $var);
Offline tomie94 - 24/05/2008 17:32 (laatste wijziging 24/05/2008 17:33)
Avatar van tomie94 PHP interesse ok,
  1. function changeBlock($edit, $new, $var)
  2. {
  3. $var = str_replace('['.$edit.']', $new, $var);
  4. return $var;
  5. }

werkt, maar als ik meerdere dingen wil aanpassen weer niet, hoe kan dat?
[edit]
laat maar, zelf een foutje gemaakt[/edit]
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.263s