str_replace und zahlen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • str_replace und zahlen

    Hallo !

    Hab ein kleines Problem. Ich möchte mit dem str_replace Befehl betitelte Platzhalter ersetzen. Diese sind die Kombination aus einem Buchstaben und einer Zahl und befinden sich in einer Tabelle.


    Beispiel:

    PHP-Code:
    <td width="71" bgcolor="#FAF8F8">
                <
    p>T60</p>
            </
    td>
            <
    td width="71" bgcolor="#FAF8F8">
                <
    p>T91</p>
            </
    td>
            <
    td width="71" bgcolor="#FAF8F8">
                <
    p>T121</p>
            </
    td
    Nun möchte ich diese Platzhalter ersetzen und verwende dafür diesen Befehl:

    PHP-Code:
    $tpl=str_replace('T60',$t60,$tpl);
    $tpl=str_replace('T91',$t91,$tpl);
    $tpl=str_replace('T121',$t121,$tpl); 
    Leider werden die Platzhalter nicht richtig ersetzt.
    Es erscheinen nur 1 Buchstabe und eine Zahl als Austausch.

    Ich denke mal das str_replace die Kombination aus Buchstaben und Zahl nicht ersetzen kann oder ? Welchen Befehl müsste ich statt dessen benutzen ?

    Grüße

    Werner

  • #2
    Re: str_replace und zahlen

    Original geschrieben von Der.Werner
    Ich denke mal das str_replace die Kombination aus Buchstaben und Zahl nicht ersetzen kann oder ?
    doch, natürlich.

    du machst irgendetwas anderes falsch.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hi !
      Danke für die schnelle Antwort.

      Hmm, das ist merkwürdig.

      Mein Code ist so aufgebaut:

      PHP-Code:
      $mysql=mysql_connect($sqlserver,$sqluser,$sqlpassword);

      mysql_select_db($sqldb$mysql);

      $r1="SELECT Dienst FROM gruppe5_05 WHERE Tag=1";

      $r2="SELECT Dienst FROM gruppe5_05 WHERE Tag=2";

      $r3="SELECT Dienst FROM gruppe5_05 WHERE Tag=3";

      $g1=mysql_query($r1,$mysql);

      $g2=mysql_query($r2,$mysql);

      $g3=mysql_query($r3,$mysql);

      $t1=mysql_result($g1,0,"Dienst");

      $t2=mysql_result($g2,0,"Dienst");

      $t3=mysql_result($g3,0,"Dienst");

      $tpl=join(""file("templates/kl_jahr.tpl"));

      $tpl=str_replace('T1',$t1,$tpl);

      $tpl=str_replace('T2',$t2,$tpl);

      $tpl=str_replace('T3',$t3,$tpl);

      echo 
      $tpl;

      mysql_close($mysql); 
      Vielleicht leigt esam MySQL. Aber wenn ich ein echo auf die einzelnen $t Variablen mache bekomme ich auch das gewünschte Ergebnis ausgeliefert.

      Kommentar


      • #4
        Hallo,

        probiers mal so:
        PHP-Code:
        $tpl=str_replace('T1','$t1',$tpl); 
        Wenn $t1 eine Zahl ist dann reagieren die str_ Funktionen nicht wie erwartet, durch die Hochkommas zwingt man sie den Wert als String anzusehen.

        Gruss
        Quetschi

        BTW:
        Deine Programmierung erscheint mir sehr umständlich. Schreibst du wirklich jedesmal eine neue Query (pro fortlaufender Nummer)? Beschäftige dich mal mit Schleifen und wie du sie in deinem Fall sinnvoll anwenden kannst, z.B. die hier:

        http://de2.php.net/while
        Zuletzt geändert von Quetschi; 30.06.2005, 08:52.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Original geschrieben von Quetschi
          Wenn $t1 eine Zahl ist dann reagieren die str_ Funktionen nicht wie erwartet, durch die Hochkommas zwingt man sie den Wert als String anzusehen.
          dann würde ich aber doppelte nehmen - es sei denn, du willst wirklich durch den text $t1 ersetzen ...


          und außerdem, in einem kurzen test konnte ich das beschriebene "unerwartete" verhalten nicht nachvollziehen.

          wenn $ersatz den wert 4711 hat, liefern
          PHP-Code:
          str_replace('T1'$ersatz$text);
          str_replace('T1'"$ersatz"$text); 
          exakt das gleiche ergebnis.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            dann würde ich aber doppelte nehmen - es sei denn, du willst wirklich durch den text $t1 ersetzen ...
            ja, stimmt, sorry.

            Hatte mal genau das gleiche Problem, die Platzhalter wurden nicht um den Wert der Variable ersetzt, sondern ich glaub es wurde ihr ASCII-code in einem Hex-Wert dargestellt, zumindest sah es so aus, nachgeprüft hab ichs ned. Mit den Anführungszeichen konnte ich die str_ Funktionen dann dazu überreden wie gewünscht zu arbeiten.

            EDIT:
            Sorry, war nicht bei str_replace(), sondern bei ereg_replace();
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar

            Lädt...
            X