Funktion zum Leerzeichen durch %20 ersetzen lässt Server abkacken

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

  • Funktion zum Leerzeichen durch %20 ersetzen lässt Server abkacken

    Hallo Leute,
    Ich habe eine Funktion geschrieben der ein
    String übergeben wird. Der String soll nach Leerzeichen
    durchsucht werden, und diese dann durch %20 erstezt werden.
    Allerdings finde ich den Fehler in meiner Funktion nicht, XAMMP
    hängt sich immer auf, auch mein Webserver kackt ab.
    Was ist der Fehler ?
    PHP-Code:
    echo leerzeichen("hallo biff du ");

    function 
    leerzeichen($zupruefen){
    for (
    $i=0;strlen($zupruefen)-1;$i++){
        if (
    $zupruefen[$i] = chr(32)){
            
    $j strlen($zupruefen);
                for (
    $j;$i;$j--){
                    
    $zupruefen[$j+3]=$zupruefen[$j];
                }
                
    $zupruefen[$i]=chr(37);
                
    $zupruefen[$i+1]="2";
                
    $zupruefen[$i+2]="0";
            }
        }
    return 
    $zupruefen;

    Bitte helft mir.
    Gruß
    Till
    Zuletzt geändert von till.kaufmann; 14.07.2006, 00:08.

  • #2
    ohne jetzt deinen code angeschaut zu haben, frage ich mich, warum du nicht urlencode benutzt.
    mfg

    Kommentar


    • #3
      for ($j;$i;$j--){ macht eine 00 Schleife.

      Kommentar


      • #4
        huch:

        frage ich mich, warum du nicht urlencode benutzt.
        hab ich mich geirrt dann doch eher sowas:

        PHP-Code:

        function leer($text){
            return 
        str_replace(chr(32),"%20",$text);
        }

        echo 
        leer("hallo du biff"); 
        mfg

        Kommentar


        • #5
          kann man mit for nicht runterzählen ?

          Edit:
          PHP-Code:
          echo leerzeichen("hallo biff du ");

          function 
          leerzeichen($zupruefen){
          for (
          $i=0;strlen($zupruefen)-1;$i++){
              if (
          $zupruefen[$i] = chr(32)){
                  
          $j strlen($zupruefen);
                      while (
          $j!=$i){
                          
          $zupruefen[$j+3]=$zupruefen[$j];
                      }
                      
          $zupruefen[$i]=chr(37);
                      
          $zupruefen[$i+1]="2";
                      
          $zupruefen[$i+2]="0";
                      --
          $j;
                  }
              }
          return 
          $zupruefen;

          geht es so, so wäre es ja keine endlosschleife, oder ?
          Zuletzt geändert von till.kaufmann; 13.07.2006, 20:58.

          Kommentar


          • #6
            PHP-Code:
            if ($zupruefen[$i] = chr(32)){ 
            du meinst wohl "==" ...

            und verwende urlencode, wie dir bereits gesagt wurde.

            cya
            axo

            Kommentar


            • #7
              Dein
              PHP-Code:
              while ($j!=$i){
                              
              $zupruefen[$j+3]=$zupruefen[$j];
                          } 
              ist auch eine 00-Schleife. (müsste $j--; in die Schleife, und sicherer ist $j>$i als $j!=$i)

              Die stringelementsyntax geht heute mit {} , nicht mit []. Ich bezweifle, ob mit stringelementoperationen die stringlänge verändert werden kann.

              ja, for kann man herunterzählen, es hätte for ($j;$j>$i;$j--) heissen sollen.

              und der test auf Leerzeichen lautet if ($zupruefen[$i] == chr(32)){

              .
              Zuletzt geändert von mäander_; 13.07.2006, 22:03.

              Kommentar


              • #8
                Bei einer for-Schleife musst du einen Vergleich anstellen!

                PHP-Code:
                for ($i 0$i < (strlen($zupruefen) - 1); $i++) { 
                Aber geh erstmal Grundlagen lernen! Dir fehlt noch Einiges!

                z.B. str_replace:
                PHP-Code:
                $text str_replace(' ''%20'$text); 
                Zuletzt geändert von Hopka; 13.07.2006, 21:28.
                hopka.net!

                Kommentar


                • #9
                  Original geschrieben von Hopka
                  Bei einer for-Schleife musst du einen Vergleich anstellen!
                  sein originales ..;$i;... i s t ein vergleich.

                  Kommentar


                  • #10
                    Original geschrieben von Hopka
                    Aber geh erstmal Grundlagen lernen!
                    bevor du dir derartige aussagen erlauben darfst, solltest du lernen, allein durchs lesen des codes einzuschätzen, ob der autor ahnung vom programmieren hat oder nicht.

                    @OP: http://lugbz.org/documents/smart-questions_de.html#goal ... was willst du mit deiner funktion überhaupt erreichen? in php schreibt man sowas nicht, sondern bastelt das ganze aus der vielzahl von bestehenden funktionen zusammen.

                    cya
                    axo

                    Kommentar


                    • #11
                      Besser als str_replace wäre wohl preg_replace geeignet. Mit dieser Fkt kannst du auch mehrfache Leerzeichen ersetzen
                      Also so in der Art
                      PHP-Code:
                      function whiteSpaces($str){
                          
                      $str preg_replace('/\\s/','%20',$str);
                          return 
                      $str;

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        OffTopic:
                        meiner Meinung nach darf man so vorgehen, wie es der Frager angepackt hat. (abgesehen von der rohen Sprache). Diese Programmierkenntnisse muss man sowieso am Anfang erwerben, und an einem stringbeispiel ist es rechtmässig. Die Funktionen str_replace und preg_replace sind in der vorliegenden Frage aus diesem Grunde nicht indiziert.

                        Kommentar


                        • #13
                          str_replace und preg_replace sind in der

                          vorliegenden Frage aus diesem Grunde nicht indiziert.
                          imho ganz schön warm heute
                          mfg

                          Kommentar


                          • #14
                            meiner Meinung nach darf man so vorgehen, wie es der Frager angepackt hat. (abgesehen von der rohen Sprache). Diese Programmierkenntnisse muss man sowieso am Anfang erwerben, und an einem stringbeispiel ist es rechtmässig. Die Funktionen str_replace und preg_replace sind in der vorliegenden Frage aus diesem Grunde nicht indiziert.
                            Da gebe ich dir recht. Nur zu Programmierkenntnissen gehört auch zu wissen, dass man eine Aufgabe auch ganz anders lösen kann.
                            Und wenn man 'guten Programmierstil' daran festmachen will, dass je weniger Zeilen umso besser, dann ist es doch nicht verkehrt den topicstarter darauf hinzuweisen, dass es auch anders geht

                            Gruss

                            tobi
                            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                            Kommentar


                            • #15
                              wer die for syntax nicht kann und im while den decrementbefehl falsch platziert hat, dem ist mit der eingebauten funktion nicht gedient. Deswegen habe ich auch die Lösungen ergänzt.

                              Kommentar

                              Lädt...
                              X