Hendrik: Variablen aus Eingabefeld lesen...

Hey!

Ich möchte Variablen aus einem Eingabefeld lesen. Das heißt in PHP:

  
$schimpfwort = "scheiße";  
$text = $_POST['text'];  
echo $text;  

Wenn nun aber der eingegebene Text in etwa so ist:

Ich finde dich ganz $schimpfwort.

Dann wird ausgegeben:

Ich finde dich ganz $schimpfwort.

Und nicht eben:
Ich finde dich ganz scheiße.

Wie kann man es erreichen, dass die Veriablen trotzdem verarbeitet werden (bla), und nicht nur als bloßer Text ($...) dastehen?

Hendrik

--
-------------------
Zur Info: Ich habe leider nur PHP 4.4.2 und MySQL 4.1.20 zur Verfügung!
-------------------
ie:% fl:| br:> va:) ls:[ fo:) rl:( n4:° ss:| de:> js:| ch:? sh:( mo:) zu:)
SELFCode Decoder
  1. Hi,

    Wenn nun aber der eingegebene Text in etwa so ist:

    Ich finde dich ganz $schimpfwort.

    Dann wird ausgegeben:

    Ich finde dich ganz $schimpfwort.

    Ja, das ist ja auch logisch. Denn du gibst einen String ein und dieser wird weitergeben, was soll da also geändert werden?

    Und nicht eben:
    Ich finde dich ganz scheiße.

    Warum soll man denn $schimpfwort eingeben? Warum schreibst du denn nicht das böse S-Wort dahin, wenn es sowieso nachher ausgegeben werden soll?

    Wie kann man es erreichen, dass die Veriablen trotzdem verarbeitet werden (bla), und nicht nur als bloßer Text ($...) dastehen?

    Da müsstest du dann den String $text insofern bearbeiten, dass du jedes Wort in dem Satz mit der Variable $schimpfwort vergleichen musst. Wenn ein Treffer vorhanden ist, dann wird der String $schimpfwort, der ja in dem input-Feld eingegeben worden ist, durch das S-Wort ersetzen.

    Ich sehen aber bis jetzt keinen Sinn dahinter. Wahrscheinlich ist da einer hinter, aber so, wie du es beschreibst, ist das sehr sinnfrei.

  2. echo $begrüßung;

    $text = $_POST['text'];
    echo $text;

    echo $_POST['text']; macht das gleiche, nur dass es nur eine Zeile braucht.

    Wie kann man es erreichen, dass die Veriablen trotzdem verarbeitet werden (bla), und nicht nur als bloßer Text ($...) dastehen?

    Das was dir da im $_POST-Arrab bereitgestellt wird sind bereits fix und fertige Strings. Das Ersetzen von Variablennamen durch ihren Inhalt erfolgt nur beim Parsen, wenn aus PHP-Code etwas Ausführbares gemacht wird. Möchtest du diesen Vorgang zur Laufzeit ausführen, musst du eval() bemühen. Das ist nicht in jedem Fall eine gute Idee, weil dadurch ohne weitere Prüfung der Eingabedaten auch beliebiger anderer Code untergeschoben und ausgeführt werden kann. Anstatt eine solche Prüfung einzubauen, kannst du gleich eine andere Alternative wählen, die insgesamt weniger aufwendig ist.

    Beispielsweise könntest du aus einem solchen Muster wie "Ein bestimmtes Zeichen gefolgt von Buchstaben gefolgt von einem Nichtbuchstaben" die "Buchstaben" durch den Inhalt einer Variablen, sofern vorhanden, austauschen lassen. Vor der Ausgabe des fertiggestellten String in ein HTML-Dokument sollte der String noch durch htmlspecialchars() gejagt werden, damit kein ungewollter HTML-Code (mit vielleicht eingebettetem Script-Code) zur Ausführung kommt.

    echo "$verabschiedung $name";

    1. hi,

      Das was dir da im $_POST-Arrab bereitgestellt wird

      ^^^^^
      Dein Tribut ans heutige Datums, 9/11?

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }