str_replace ersetzt die Werte nicht korrekt

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • str_replace ersetzt die Werte nicht korrekt

    Hallo. Ich wollte mittels str_replace bestimmte Werte in einer Datei ändern und diese anschließend ausgeben.

    Hier mal der Code:

    Quellcode

    1. <?PHP
    2. $searchReplace = array(
    3. '{tarif}' => 'Tarif A'
    4. );
    5. function webdomain() {
    6. $text = file_get_contents("tarif.tpl");
    7. $text = str_replace(array_keys($searchReplace), array_values($searchReplace), $text);
    8. echo $text;
    9. }
    10. if (isset($_SESSION['tarif'])) {
    11. switch ($_SESSION['tarif']) {
    12. case '1-2-1-1':
    13. webdomain();
    14. break;
    15. }
    16. }
    17. ?>
    Alles anzeigen


    Die Datei tarf.tpl wird gefunden und ausgegeben, allerding werden die darin enthaltenen Smartys nicht ersetzt. Aus {tarif} soll Tarif A werden. Aber das funktioniert nicht. Ausgegeben wird immer noch der usprünglich Code mit {tarif}.

    Worin kann da liegen. Str_replace ist doch richtig angegeben, oder?
  • str_replace ist korrekt. Aber die Variable muss entweder direkt in die Funktion. Oder sie muss als Globale eingebunden werden.

    Außerdem ist es unschön, dass Funktionen Ausgaben produzieren. Machs besser über einen Rückgabetyp.

    Hier mal die überarbeitete Version:

    Quellcode

    1. <?php
    2. session_start();
    3. function webdomain() {
    4. //global $searchReplace; <-- Alternativ extern deklarieren
    5. $searchReplace = array('{tarif}' => 'Tarif A');
    6. $text = file_get_contents("tarif.tpl");
    7. $text = str_replace(array_keys($searchReplace), array_values($searchReplace), $text);
    8. return $text;
    9. }
    10. if (isset($_SESSION['tarif'])) {
    11. switch ($_SESSION['tarif']) {
    12. case '1-2-1-1':
    13. echo webdomain();
    14. break;
    15. }
    16. }
    17. ?>
    Alles anzeigen