Bernd: Suchen und Ersetzen

Hallo,

ich muss ein Text in einem Satz ersetzen:

$text = $ve_betreff; //Nummer - {{Nummer}} - {{Name}} - {{Zeitraum}}
$text = str_ireplace({{Nummer}}, $Nummer, $text);
echo $text;

geht nicht, mein Editor zeigt dass in der Zeile ein Fehler ist. Liegt an den {{}}. Was mache ich falsch bzw. wende ich die falsche Funktion an? Und wie kann ich direkt mehrere Wörter ersetzen?

EDIT:

Mein Fehler so kann ich ersetzen

$text = $ve_betreff; //Nummer - {{Nummer}} - {{Name}} - {{Zeitraum}}
$text = str_replace("{{Nummer}}", "$Nummer", $text);
echo $text;

Jetzt ist nur die Frage wie kann ich mehrere Sachen ersetzen?

akzeptierte Antworten

  1. Hallo Bernd,

    Du willst die Zeichenfolge "{{Number}}" durch den Inhalt der Variablen $Nummer ersetzen?

    Konstante Zeichenfolgen müssen in ' oder " eingeschlossen werden.

    Mehrfache Ersetzungen beschreibt das PHP Handbuch: http://php.net/manual/de/function.str-ireplace.php

    echo str_ireplace(['php', 'tolle'], ['Cobol', 'scheußliche'], "PHP ist eine tolle Sprache");
    

    Rolf

    --
    sumpsi - posui - clusi
    1. Vielen lieben Dank für deine Antwort und Hilfe. Ich werde es gleich mal testen.

  2. Hallo Bernd,

    $text = str_replace("{{Nummer}}", "$Nummer", $text);
    

    Die Anführungszeichen um {{Nummer}} sind richtig und notwendig, die Anführungszeichen um $Nummer sind überflüssig. Du verwendest hier (möglicherweise unwissentlich) ein PHP-Feature, dass sich Variable-Parsing nennt. Dieses Feature greift in Zeichenketten, die in doppelte Anführungszeichen eingeschlossen sind, und in heredoc-Strings (Details stehen hier).

    Variable-Parsing erkennt Variablen in Zeichenketten und ersetzt sie durch ihren Inhalt. Deswegen kommt am Ende der Wert, der in $Nummer steht, in $text an. Wenn $Nummer die gewünschte Nummer bereits als Zeichenkette enthält, ist das unnötig. Wenn $Nummer eine Zahl enthält (d.h. wenn gettype($Nummer) "integer" oder "double" als Ergebnis liefert), ist es ebenfalls unnötig, weil PHP die Umwandlung in einen String automatisch durchführt.

    Rolf

    --
    sumpsi - posui - clusi