str_replace wird nicht ausgeführt

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

  • str_replace wird nicht ausgeführt

    Hallo,
    $renproj wird aus einem formular per post übergeben, läuft durch das replace, die leerzeichen werden ersetzt, prima.
    $pa kommt auch per post an, läuft durch das replace, die leerzeichen werden nicht ersetzt! ??? warum nicht ???

    Hat jemand ne Ahnung, warum bei $pa die Leerzeichen nicht ersetzt werden wie bei $renproj???

    PHP-Code:
    echo print_r($_POST); // Ausgabe aller POST-Elemente";
             
    $pa=$_POST['pa'];
             
             

             
    $k2=array('Ä','ä','Ö','ö','Ü','ü',
    ' ','²','³','ß');
    $k1=array('Ä','ä','Ö','ö','Ü','ü',' ','²','³','ß') ;
    $renproj str_replace($k1,$k2,$renproj);
    $pa str_replace($k1,$k2,$pa);
    echo
    "$pa<br />$renproj"
    Zusatz:
    Ausgabe des Quelltextes der HP:
    1fhp1_000_Erstes FH Projekt<br />fhp1_010_Erstes& n b s p ;FH& n b s p ;Projekt

    (Ohne die Leerzeichen im Kryptischen teil. Zusammengeschrieben wird hier dann nur ein einfaches Leerzeichen ausgegeben)
    Zuletzt geändert von fx001; 19.01.2007, 00:12.
    Wer Rechtschreibfehler findet, darf sie behalten

  • #2
    Re: str_replace wird nicht ausgeführt

    Hat's einen besonderen Grund, warum du nicht einfach htmlentities() benutzen willst ...?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ja gib es : unwissenheit ; )

      Habs geändert, doch nun wird auch das zweite ($renproj) mit leerzeichen ausgegebene stat htmlkryptisch

      PHP-Code:
       echo print_r($_POST); // Ausgabe aller POST-Elemente";
               
      $pa=$_POST['pa'];

       
      /*        
      $k2=array('&Auml;','&auml;','&Ouml;','&ouml;','&Uuml;',
      '&uuml;','&nbsp;','&sup2;','&sup3;','&szlig;');
      $k1=array('Ä','ä','Ö','ö','Ü','ü',' ','²','³','ß') ;
      $renproj = str_replace($k1,$k2,$renproj);
      $pa = str_replace($k1,$k2,$pa);
      */
      htmlentities($pa);
      htmlentities($renproj);
      echo
      "$pa<br />$renproj"
      Quelltext:
      1fhp1_000_Erstes FH Projekt<br />fhp1_002_Erstes FH Projekt

      Ergänzung:
      Ich les gerade, einfache Leerzeichen werden mithtmlentries nicht ersetzt. das MUSS aber, von daher ist das einfache ersetzen schon ok, aber warum übersetzt der die Leerzeichen bei $pa nicht?, aber bei $renproj???
      Zuletzt geändert von fx001; 19.01.2007, 00:26.
      Wer Rechtschreibfehler findet, darf sie behalten

      Kommentar


      • #4
        Ähm - mach dir bitte mal klar, dass htmlentities nicht den Inhalt der übergebenen Variable ändert, sondern einen Rückgabewert liefert.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Ja, hab ich gelsen, das muss aber, von daher ist meine erste Lösung denke ich schon ganz richtig. Die Frage ist nur, warum es bei $renproj klappt und bei $pa nicht!?
          Wer Rechtschreibfehler findet, darf sie behalten

          Kommentar


          • #6
            Was heißt denn "das muss aber"?

            Was is denn der unterschied ob du schreibst:

            PHP-Code:
            $text str_replace("ä""&auml;"$text); 
            oder

            PHP-Code:
            $text htmlentities($text); 
            ?
            Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

            Kommentar


            • #7
              ganz einfach, bei htmlneries werden einfache Leerzeicen nicht in dsa kryptische leerzeichen gewandelt sondern bleiben einfache Leerzeichen.
              Kann mir denn keiner sagen warum bei $pa nicht die Leerzeichen genauso ersetzt werden wie bei $renproj???
              Wer Rechtschreibfehler findet, darf sie behalten

              Kommentar


              • #8
                ...und aus welchem grund möchte man die leerzeichen kodieren?

                Kommentar


                • #9
                  ...und aus welchem grund möchte man die leerzeichen kodieren?
                  Vllt weil er den String via URL übergeben will
                  @topicstarter
                  Kann es sein, dass du urlencode() suchst ?

                  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


                  • #10
                    Der Grund:
                    Es wird ein Ordner umbenannt. Der Ordner wurde auf die gleiche Art erstellt wie hier (erst Formulareingabe und dann replace). Wenn ich eine Datei in dem Ordner öffnen will, darf kein Leerzeichen in dem Ordnernamen sein.

                    Warum in html kodiert:
                    Der Ordnername wird auf der Seite angezeigt.

                    Dass man den Ordnernamen auch "cleverer, eleganter" hätte mitgeben können ist mir im nachhinein auch bewusst geworden. Zum einen ist das Projekt jetzt schon so zeitaufwändig weit vortgechritten, dass sich das zu diesem Zeitpunkt nicht mehr rechnet umzustellen und zum anderen funktioniert es wenn man keine Leerzeichen benutzt, auch mit Verwendung von Sonderzeichen im Ordnernamen.

                    Mein Problem:
                    $pa und $replace durchlaufen das replace, aber nur bei $replace werden die leerzeichen durch kodierte html Leerzeichen ersetzt. Nicht bei $pa? warum?

                    Das ist der replace Teil:
                    PHP-Code:
                    $k2=array('&Auml;','&auml;','&Ouml;','&ouml;','&Uuml;',
                    '&uuml;','&nbsp;','&sup2;','&sup3;','&szlig;');
                    $k1=array('Ä','ä','Ö','ö','Ü','ü',' ','²','³','ß') ;
                    $renproj str_replace($k1,$k2,$renproj);
                    $pa str_replace($k1,$k2,$pa);

                    echo
                    "$pa<br />$renproj"
                    Das die ausgabe im Quelltext der Seite:
                    PHP-Code:
                    1fhp1_000_Erstes FH Projekt<br />fhp1_000_Erstes&nbsp;FH&nbsp;Projekt&nbsp;umbenannt 
                    Wer Rechtschreibfehler findet, darf sie behalten

                    Kommentar


                    • #11
                      Wenn ich eine Datei in dem Ordner öffnen will, darf kein Leerzeichen in dem Ordnernamen sein.
                      kennst du "eigene dateien"? funktioniert doch prima...
                      Warum in html kodiert:
                      Der Ordnername wird auf der Seite angezeigt.
                      dann soll die ausgabe vorher htmlentities durchlaufen - mehr nicht.

                      zeig mal den var_dump beider variablen (pa und reproj).

                      Kommentar


                      • #12
                        Skript:
                        PHP-Code:
                        $k2=array('&Auml;','&auml;','&Ouml;','&ouml;','&Uuml;','&uuml;',
                        '&nbsp;','&sup2;','&sup3;','&szlig;');
                        $k1=array('Ä','ä','Ö','ö','Ü','ü',' ','²','³','ß') ;
                        $renproj str_replace($k1,$k2,$renproj);
                        $pa str_replace($k1,$k2,$pa);
                        echo
                        "$pa<br />$renproj";
                        var_dump($renproj);
                        var_dump($pa); 
                        Quelltext der Seite:
                        PHP-Code:
                        1fhp1_000_Erstes FH Projekt<br />
                        fhp1_000_Erstes&nbsp;FH&nbsp;Projekt&nbsp;umbenanntstring(51)
                         
                        "fhp1_000_Erstes&nbsp;FH&nbsp;Projekt&nbsp;umbenannt"
                        string(26"fhp1_000_Erstes FH Projekt" 
                        Wer Rechtschreibfehler findet, darf sie behalten

                        Kommentar


                        • #13
                          _vor_ dem ersetzen.

                          Kommentar


                          • #14
                            _vor_ dem ersetzen
                            entschuldige, versteh leider nicht was du meinst
                            Wer Rechtschreibfehler findet, darf sie behalten

                            Kommentar


                            • #15
                              Original geschrieben von penizillin
                              kennst du "eigene dateien"? funktioniert doch prima...
                              *lool*

                              mkdir scheisse hoch neun

                              funktioniert prima, oder? ;-)
                              Niveau sieht nur von unten aus wie Arroganz!

                              Kommentar

                              Lädt...
                              X