Statisches symbol dynamisch umwandeln

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

  • Statisches symbol dynamisch umwandeln

    Hallo,
    ich könnte für folgendes Problem gut eure Hilfe gebrauchen. Ich versuche ein statisches Symbol im Text mit einer numerisch auftseigenden Variable+Nummer zu ersetzen. Bis jetzt habe ich folgenden code:

    <?
    $oldstring="BLA% BLA% BLA% BLA% BLA%";
    $newstring=preg_replace('#%#e','isset($i)?0:++$i',$oldstring);
    echo $newstring;
    ?>
    Das tatsächliche Resultat ist:
    BLA1 BLA0 BLA0 BLA0 BLA0

    Gewünscht wäre: (V+aufsteigende Nummerierung)
    BLAV1 BLAV2 BLAV3 BLAV4 BLAV5

    oder idealerweise gleich die Ersetzung von % durch einen html tag mit aufsteigender Variablennumer als input name:
    BLA<input type="text" name="V1"> BLA<input type="text" name="V2"> etc.


    Vielen Dank für alle Tips!
    Thanks a lot for your time!

  • #2
    PHP-Code:
    isset($i)?0:++$i 
    wenn gesetzt => 0
    wenn nicht gesetzt => erhöhen

    absicht?

    wenn ja, hab ich noch ne idee
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ja, sehe das Problem, die Ersetzung wird nur einmal bei$i=0 gemacht; $i sollte sich wohl in einer Schleife erhöhen.Folgenden Tip den ich schon bekommen habe funktiniert aber auch nicht:
      <?
      $oldstring="BLA% BLA% BLA% BLA% BLA%";
      $num = 1;
      for($i=1;$i<=5;$i++){
      $newstring=preg_replace('#%#e','$num',$oldstring);

      $num++;
      echo $newstring;
      }
      ?>
      Produziert jedes "Bla" 5 mal pro %Eintrag.
      Irgendwie lautet eine solche Ersetzung nach einem einfachen Problem, aber bis jetzt haben alle die ich gefragt habe sich die Zähne daran ausgebissen.
      Das Resultat sollte wie schon geschrieben entweder:
      BlaV1 BlaV2 usw.
      oder eben idealerweise (das wäre das Endprodukt, das ich brauche) so aussehen:
      Bla<input type=text' name='V1'> Bla<input type='text' name='V2'> usw... (also statischer html tag, wo sich nur der Name des Inputs im Sinne einer numerisch aufsteigenden Variable ändert (V1, V2, V3...)
      Danke fürs Mitknobeln!

      Kommentar


      • #4
        PHP-Code:
        $oldstring="BLA% BLA% BLA% BLA% BLA%"
        $old explode (' '$oldstring);
        for (
        $i=0$i<sizeof($old); $i++) 
          
        $new[]=preg_replace('#%#e','$i',$old[$i]); 
        nicht schön, aber prinzipiell .. ?`
        EDIT:
        wenn das geht, sollte die input-sache auch nicht weiter ein problem sein ...

        EDIT:
        lol, geht auch ohne pcre, explode am '% ', und setzt dann nur den schleifen-index
        Zuletzt geändert von derHund; 03.03.2004, 17:50.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          DANKE! Das ist wirklich ein Tip, der in die richtige Richtung geht:
          <?
          $oldstring="BLA% BLA% BLA% BLA% BLA%";
          $old = explode (' ', $oldstring);
          for ($i=0; $i<sizeof($old); $i++)
          $new[]=preg_replace('#%#e','$i',$old[$i]);
          for ($i=0; $i<sizeof($old); $i++)
          echo "$new[$i]&nbsp;";
          ?>
          gibt tatsächlich:
          BLA0 BLA1 BLA2 BLA3 BLA4

          Die Input Sache gestaltet sich noch etwas schwer:
          Folgendes funktiniert leider nicht ("§" würde später durch einen einfachen Erstezen-Befehl global mit " getauscht werden)
          <?
          $oldstring="BLA% BLA% BLA% BLA% BLA%";
          $old = explode (' ', $oldstring);
          for ($i=0; $i<sizeof($old); $i++)
          $new[]=preg_replace('#%#e','<input type=§text§ name=§ $i §>',$old[$i]);
          for ($i=0; $i<sizeof($old); $i++)
          echo $new[$i]]&nbsp;";
          ?>
          Zuletzt geändert von tho68; 03.03.2004, 18:04.

          Kommentar


          • #6
            PHP-Code:
            $oldstring="BLA% BLA% BLA% BLA% BLA%"
            $old explode ('% '$oldstring);
            for (
            $i=0$i<sizeof($old); $i++) 
              echo 
            $old[$i].'<input type="text" name="V'.$i.'" /><br />'
            ungetestet, aber prinzipiell?
            OffTopic:
            ;p, ich hab man farbigen code
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              SUPER! Vielen Dank. So nah war ich noch nie am Ziel. Der obige Quellcode produziert zu 99% das richtige Resultat:
              BLA<input type="text" name="V0" /><br />
              BLA<input type="text" name="V1" /><br />
              BLA<input type="text" name="V2" /><br />
              BLA<input type="text" name="V3" /><br />
              BLA%<input type="text" name="V4" /><br />

              Rätselhaft bleibt nur warum er beim letzten "Bla" (also bei V4) das %-Zeichen stehen läßt; aber das kann man auch manuell nachbesseren. Es betrifft immer nur den letzten Eintrag. Jedenfalls eine imense Zeitersparnis gegenüber den manuellen copy/paseten von 100 solcher Einträge.

              Kommentar


              • #8
                hmm,

                unaufmerksamkeit meinerseits
                PHP-Code:
                $oldstring='BLA% BLA% BLA% BLA% BLA%'
                $oldstring.=' dummy';

                $old explode ('% '$oldstring);

                for (
                $i=0$i<sizeof($old)-1$i++) 

                  echo 
                $old[$i].'<input type="text" name="V'.$i.'" /><br />'
                was dümmeres fällt mir auf die schnelle nicht ein ... hoffe, das geht.
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Jetzt ist der code 100% perfekt. Super vielen Dank nochmal! Werde die Lösung "with all due credits" an Dich an den anderen Foren posten, wo ich die Anfrage gestellt hatte; denn sehr weit ist dort noch niemand gekommen. Erstaunlich elegant ist die kürze von dem Ding!

                  Kommentar

                  Lädt...
                  X