Grundlagen PHP: Sonderzeichen konvertieren

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

  • #16
    Hallo Griecherus.

    Grundsätzlich habe ich gelernt, das Variablen in ' ' als Text geschrieben werden und in " " aufgelöst und ihr Inhalt dargestellt wird.
    Weiter habe ich im Handbuch nachgeschaut und dort wird der einzutragende Wert in htmlentities() als String gekennzeichnet, so das ich das so richtig gemacht zu haben gedacht hatte.

    Gruß
    Estrela
    Denk positiv.

    Kommentar


    • #17
      Seufz ... wie kann man denn nur ... die Variable ist schon vom Typ String, also warum packt man sie nochmals in Anführungszeichen rein? Damit es zu String wird? Oder doppel hält besser, oder was

      Fazit: Streng mal deine Gehirnzellen etwas an, dann kommt sowas nich zustande.

      Also:

      falsch => function("$myvar");

      richtig => function($myvar);

      btw: wir helfen hier schon mal gern, aber meinst du nicht, dass du deine Grundlagenkenntnisse mal nachholen sollst, bevor du weiter fragst? Denn deine Topics sind elend lang und nur mit Grundlagenfragen befüllt.

      Kommentar


      • #18
        Variablen in Anführungszeichen werden substituiert, das ist richtig. Du solltest dann aber auch wissen, dass Anführungszeichen als Delimiter (Begrenzer) einer Zeichenkette dienen, die es erlauben, eingebettete Variablen zu substituieren. Beispiel:
        PHP-Code:
        echo "Mein Name ist $name.";       // bzw.
        echo "Mein Name ist {$name}."      // oder (imho am saubersten)
        echo 'Mein Name ist ' $name '.'
        Anführungszeichen gehören nicht um lose Variablen. Wenn du ein Typecasting (Konvertierung des Typs nach bspw. String) durchführen möchtest, gibt es dafür Funktionen und ein Konstrukt:
        PHP-Code:
        settype($var'string'); // oder
        $var strval($var);     // oder
        $var = (string)$var;     // mein Favorit 
        In deinem Fall wäre aber auch das unnütz, denn deine Variable ist ja bereits vom Typ String.
        Zuletzt geändert von Griecherus; 25.06.2008, 17:58.
        Nieder mit der Camel Case-Konvention

        Kommentar


        • #19
          Hallo zusammen.

          Ich wußte halt noch nicht, das die Beschreibung im Handbuch sich auf den Inhalt bezieht und nicht auf die äußere Darstellung, soll heißen, ich dachte, das die Kennzeichnung auf jeden Fall wie ein String zu sein hat. Danke für die Aufklärung.

          Ich bin jetzt schon mal soweit gekommen:

          PHP-Code:
          <?php
          $DatNam 
          'Dateinamen.txt';
          $handle fopen ($DatNam'w+');
          fclose ($handle);
          $VorbNeu 'Vorbereitet_Neu.txt';
          $handle2 fopen ($VorbNeu'w+');
          fclose ($handle2);
          $ArbDat 'Vorbereitet.txt';
          $ArbZ file ($ArbDat);
          foreach (
          $ArbZ as $value) { 

                                          
          $TeilZeil explode("#"$value);
                                          
          //echo $TeilZeil[0];
                                          
          $TeilZeil[0] = manipulate($TeilZeil[0]);
                                          
          //echo '<b>'.$TeilZeil[0].'</b>'.'<br />';
                                    
          }

                                      
          function 
          manipulate($ManiTeilZeil) {
                                      
          $ManiTeilZeilh htmlentities ($ManiTeilZeil);
                                      
          $ManiTeilZeilh str_replace('&Aacute;','A',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Agrave;','A',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Acirc;','A',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Atilde;','A',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&aacute;','a',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&agrave;','a',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&acirc;','a',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&atilde;','a',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Auml;','Ae',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&auml;','ae',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Ccedil;','C',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&ccedil;','c',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Eacute;','E',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Egrave;','E',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Ecirc;','E',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&eacute;','e',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&egrave;','e',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&ecirc;','e',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Iacute;','I',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Igrave;','I',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&iacute;','i',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&igrave;','i',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Otilde;','O',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Ocirc;','O',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Oacute;','O',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&otilde;','o',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&ocirc;','o',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&oacute;','o',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Ouml;','Oe',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&ouml;','oe',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Uacute;','U',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&uacute;','u',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&Uuml;','Ue',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace('&uuml;','ue',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh str_replace(' ','',$ManiTeilZeilh);
                                      
          $ManiTeilZeilh2 = ($ManiTeilZeilh.'\n'); // Zeile 63
                                      
          $ManiZeilZusG $ManiTeilZeilh '.php">';
                                      
          $ManiZeilZusG $ManiZeilZusG $ManiTeilZeil;
                                      
          $ManiZeilZusG $ManiZeilZusG '</a>';
                                      
          $handle fopen ('Dateinamen.txt''a+');
                                      
          fwrite ($handle$ManiTeilZeilh2);
                                      
          fclose ($handle);
                                      
          /*$handle = fopen ('Vorbereitet_Neu.txt', 'a+');
                                      fwrite ($handle, $TeilZeil[1].$ManiZeilZusG);
                                      fclose ($handle);*/
                                      
          echo '<b>'.$ManiZeilZusG.'</b>'.'<br />';
                                      echo 
          '<b>'.$ManiTeilZeil.'</b>'.'<br />';
                                      
                                      return 
          $ManiTeilZeilh;
                                           }

          //echo $TeilZeil[0]; 

          ?>
          Sicherlich nicht sehr elegant mit den vielen str_replace, aber es funktioniert und die Kür kommt nach der Pflicht.
          Jetzt habe ich noch zwei Sachen.
          Erstens möchte ich die Eintragungen in Dateinamen.txt zeilenweise haben, was ich in Zeile 63 versucht habe aber so nicht klappt.
          Zweitens habe ich festgestellt, das ich in der Funktion nicht auf Arrays außerhalb zugreifen kann. Wie füge ich jetzt $TeilZeil[1] und $ManiZeilZusG zusammen?

          Gruß
          Estrela
          Zuletzt geändert von Estrela; 26.06.2008, 00:14.
          Denk positiv.

          Kommentar


          • #20
            Das du innerhalb einer funktion auf Variablen außerhalb die Nicht Als GLOBAL bezeichnet sind nicht Zugreifen kannst ist gewollt.

            PHP-Code:
            $var="ich Bin zu sehen";
            function 
            zeigdich()
            {
                echo 
            $var;
            }

            function 
            zeigdich2($var)
            {
                echo 
            $var;
            }
            function 
            zeigdich3()
            {
                global 
            $var;
                echo 
            $var;
            }

            zeigdich();
            echo 
            "<br />";
            zeigdich2($var);
            echo 
            "<br />";
            zeigdich3(); 
            Aber das is hier auch wieder Grundlage Parameter Übergabe ... Variablen behandlung
            leider find ich gerade die entsprechende passage im Handbuch nicht ums dir um die ohren zu hauen aber ...
            der werte Herr Kroppf hats auch ziemlich gut beschrieben ...

            Siehe Hier

            Wie währe es als wenn du nach zich hinweisen dich erstmal ausführlich durch seine Seite arbeitest

            ps: er erklärts sogar verständlicher als das PHP handbuch
            Bitte Beachten.
            Foren-Regeln
            Danke

            Kommentar


            • #21
              http://www.php.net/manual/en/languag...bles.scope.php

              Bezüglich deiner str_replace() Orgie hatte ich ganz zu Beginn schon mal einen Vorschlag gemacht, Stichwort Array.

              Kommentar


              • #22
                Hallo zusammen.

                Ich habe hier Schwierigkeiten, das Array $TeilZeil[1] in die Funktion zu importieren.
                Habe auch schon versucht, das Array einer Variablen zuzuweisen ($TeilZeil[1] = $TeilZeilB und diese dann zu importieren, war auch nichts.
                Momentan habe ich das so versucht:
                PHP-Code:
                fwrite ($handle$ManiTeilZeil.$GLOBALS[$TeilZeil[1]].$ManiZeilZusG); // Zeile 75 
                Die Fehlermeldung:
                Notice: Undefined variable: TeilZeil in /home/santodai/public_html/test/test_4.php on line 75
                Das bedeutet doch, das er in dieser Konstruktion das Array nicht als Variable anerkennt.
                Wenn ich aber außerhalb der Funktion dem Array $TeilZeil[1] eine Variable zuordne, etwa so:
                $TeilZeil[1] = $TeilZeilB; //Zeile 21
                Dann kommt die Fehlermeldung:
                Notice: Undefined variable: TeilZeilB in /home/santodai/public_html/test/test_4.php on line 21
                Das bedeutet doch, das ich das Array keiner Variablen zuordnen kann.
                Wie gehe ich richtig vor, um das Array in der Funktion nutzen zu können.
                In den angesprochenen Webseiten habe ich dazu auch nichts gefunden.

                Gruß
                Estrela
                Denk positiv.

                Kommentar


                • #23
                  Ich würde dir empfehlen, das error_reporting vielleicht mal etwas runter *duck* zu drehen...

                  Diese Notices kannst du erstmal ignorieren. Sie rühren daher, dass du die Variable vorher nicht definiert hast.

                  machst du vorher ein

                  PHP-Code:
                  $TeilZeil = array(); 
                  dann sollte diese Meldung nicht mehr kommen.

                  Aber wie schon gesagt, dreh das error_reporting runter, weil es funktioniert, es ist nur eine Notice.....
                  signed oder unsigned... das ist hier die Frage

                  Kommentar


                  • #24
                    Nein!

                    Auf keinen Fall solltest du das error_reporting abdrehen. Es sind zwar nur Notices, aber sie machen dich darauf aufmerksam, dass eine Variable nicht existiert. Das ist gut zu wissen.
                    Anfänger sollten error_reporting immer volle Pulle aufdrehen.

                    Übrigens genügt es nicht, die Variable wie vorgeschlagen zu definieren. Dann wirst du sofort die nächste Fehlermeldung "undefined Index" erhalten.

                    Was machst du da eigentlich? Kann man deinen aktuellen Code mal komplett sehen?
                    (str_replace()-Orgien und ähnliches bitte durch entsprechenden Kommentar ersetzen um den Code kurz zu halten.)

                    Kommentar


                    • #25
                      Hallo onemorenerd.

                      Bin ganz Deiner Meinung, was das error_reporting betrifft. Ich bin für jede Information dankbar und die zweite Fehlermeldung habe ich auch schon bekommen.
                      Mit dem Import des Arrays will ich ja jetzt meine Links zusammensetzen. Ich habe auch schon einen anderen Weg gefunden, die Aufgabe zu lösen, indem ich den Teil des $TeilZeil[1], das ja den fixen Teil des Links darstellt, innerhalb der Funktion als Variable definiert habe. Damit habe ich die Aufgabe zwar gelöst, aber das Problem nicht ergründet.
                      Danke, das Du dabei hilfst.
                      Manches ($ManiZeilZusG) ist vielleicht auch umständlich, aber ich wollte es deutlich machen.
                      Der Code:

                      PHP-Code:
                      <?php
                      $DatNam 
                      'Dateinamen.txt';
                      $handle fopen ($DatNam'w+');
                      fclose ($handle);
                      $VorbNeu 'Vorbereitet_Neu.txt';
                      $handle2 fopen ($VorbNeu'w+');
                      fclose ($handle2);
                      $ArbDat 'Vorbereitet.txt';
                      $ArbZ file ($ArbDat);
                      foreach (
                      $ArbZ as $value) { 
                                                      
                      $TeilZeil explode("#"$value);
                                                      
                      $TeilZeil[0] = manipulate($TeilZeil[0]);
                                                }
                      function 
                      manipulate($ManiTeilZeil) {
                                                  
                      $ManiTeilZeilh htmlentities ($ManiTeilZeil);
                                                  
                      // Hier die anderen Ersetzungen
                                                  
                      $ManiTeilZeilh str_replace(' ','',$ManiTeilZeilh);
                                                  
                                                  
                      $ManiZeilZusG $ManiTeilZeilh '.php">';
                                                  
                      $ManiZeilZusG $ManiZeilZusG $ManiTeilZeil;
                                                  
                      $ManiZeilZusG $ManiZeilZusG '</a>';
                                                  
                      $handle fopen ('Dateinamen.txt''a+');
                                                  
                      fwrite ($handle$ManiTeilZeilh);
                                                  
                      fclose ($handle);
                                                  
                      $TeilZeil = array();
                                                  
                      $handle fopen ('Vorbereitet_Neu.txt''a+');
                                                  
                      fwrite ($handle$ManiTeilZeil.'#'.$GLOBALS[$TeilZeil[1]].$ManiZeilZusG);
                                                  
                      fclose ($handle);
                                                  echo 
                      '<b>'.$ManiZeilZusG.'</b>'.'<br />';
                                                  echo 
                      '<b>'.$ManiTeilZeil.'</b>'.'<br />';
                                                  return 
                      $ManiTeilZeilh;
                                                       }
                      ?>
                      Gruß
                      Estrela

                      Edit: Ich habe noch nicht die Stelle gefunden, um die Ausgabe in den Dateien zeilenweise zu gestalten.
                      Zuletzt geändert von Estrela; 26.06.2008, 23:42.
                      Denk positiv.

                      Kommentar


                      • #26
                        Oh man, der Code sieht aus wie Kraut und Rüben. Dieses Häppchen Hingewerfe bringt dich nicht weiter. Wir fangen noch mal von vorn an.

                        Du willst es lernen, ja? Nun, ich habe im Informatikunterricht in der Schule gelernt, wie man ein Programm entwickelt. Für funktionale Programmierung wie sie Anfänger in der Regel praktizieren, ist diese Vorgehensweise sehr geeignet.

                        1. Zuerst analysiert man das Problem und notiert die zur Lösung nötigen Ressourcen (Dateien, Speicher, Drucker, OS, Sprache, ...).
                        2. Dann zerlegt man das Problem in Teilprobleme. Dazu gehört auch, Eingaben, Ausgaben und Ressourcen für jeden Teil festzuhalten.
                        Das wird rekursiv wiederholt. Die Kunst ist dabei, die richtige Granularität zu treffen. Mit etwas Übung trifft man Level, wo die Teile als Programmmodule, als Klassen und als Funktionen implementiert werden können. Das letzte Level sollte auf der Befehlsebene der Programmiersprache sein. Man kann aber auch eher aufhören.
                        3. Aus der Beschreibung der Teilprobleme entwickelt man ein Struktogramm mit Pseudocode.
                        4. Das Struktogramm wird in Code in der gewählten Programmiersprache übersetzt. Jede Funktionseinheit (Funktion, Klasse, Modul, ...) wird umgehend gestestet.

                        Bei Autodidakten läuft das meist anders. Sie haben ein Problem im Kopf, überlegen sich kurz wie man es angehen kann und fangen sofort an zu programmieren. An deinen Threads kann man das sehr gut sehen.
                        Du bringst anfangs immer eine Darstellung deines Problems und deinen Lösungsansatz. Bei der Umsetzung in PHP brauchst du unsere Hilfe, weil du die Sprache nicht kennst, aber auch weil dein Lösungsansatz mangelhaft ist.

                        In einer Textdatei (Ressource A) sollen Zeichen entsprechend einer Tabelle (Ressource B) ersetzt und Text hinzugefügt werden. Das Ergbenis soll in eine neue Datei (Resource C) gespeichert werden.

                        Zerlegung in Teilprobleme, erste Iteration:
                        1. Text aus Datei A in Speicher holen und in Zeilen zerlegen.
                        2. Zeichen ersetzen / Text umschreiben.
                        3. Ergebnis in Datei B speichern.
                        Für 1. und 3. werden wir file() und file_put_contents() benutzen. 2. muss weiter zerlegt werden.
                        2.1. Ersetzungstabelle laden.
                        2.2. Zeile an Trennzeichen zerlegen.
                        2.3. In Teil 1 Zeichen suchen, ersetzen und Ergebnis in Variable speichern.
                        2.4. Wie 2.3. mit anderer Ersetzung.
                        2.5. Konkatenation der Originalzeile mit Variablen aus 2.3 und 2.4.

                        Struktogramm zeichne ich jetzt keins, aber Pseudocode muss sein.
                        1. text = file(Datei A);
                        2.1. include(Tabellendefinition);
                        foreach (explode(Zeilenumbruch, text) as nr => zeile)
                        2.2. teile = explode(trennzeichen, zeile);
                        2.3. ersetzt01 = str_replace(tabelle[0], tabelle[1], teile[0]);
                        2.4. ersetzt02 = str_replace(tabelle[0], tabelle[2|, teile[0]);
                        2.5. text[nr] = zeile + ersetzt01 + '.php">' + ersetzt02 + '</a>';
                        endforeach
                        3. file_put_contents(Datei B, text);

                        Jetzt bist du dran. Übersetze den Pseudocode mit Hilfe des Manuals in PHP.
                        Ich bin dir mit dem Pseudocode weit entgegen gekommen, es ist schon fast PHP. Aber ich habe auch Fehler gemacht, etwa im Umgang mit dem Zeilenumbruch.

                        Viel Spaß!

                        Kommentar


                        • #27
                          Ich hätte ihr jetzt noch glatt weiter geholfen aber onemorenerd wir belassen es dabei.

                          und warten ob Estrela es diesmal besser hinbekommt ...

                          was uns aber zur problemlösung bei der ganzen sache gefehlt hat Wie sieht dateiname.txt eigentlich aus?

                          wie steht es da drin.

                          aber egal ... schön geschrieben onemorenerd

                          grüsse von nemm Autodidakten
                          Bitte Beachten.
                          Foren-Regeln
                          Danke

                          Kommentar


                          • #28
                            Hallo onemorenerd.

                            Danke für Deine ausführliche Analyse und Hilfestellung.

                            So ähnlich habe ich es ja auch in der Ausgangslage geschildert, weshalb ich mich ein wenig gegen "aber auch weil dein Lösungsansatz mangelhaft ist" wehren möchte.
                            Hättest Du unvollkommen gesagt, Ok, unvollständig geht auch noch aber von mangelhaft kann hier, denke ich, nicht gesprochen werden.

                            Mein Lösungsansatz war doch ähnlich wie der, den Du jetzt freundlicherweise in Pseudocode dargestellt hast.
                            Davon bin ich abgerückt, weil die gegebene Hilfestellung einen anderen Weg über urlencoded zu htmlentities wies.
                            Ich bin noch nicht in der Lage, eigenständig Programme umzusetzen und so habe ich mit htmlentities gearbeitet, weil meine Aufgabe damit auch lösbar ist.
                            Der ursprüngliche Ansatz war breiter gefasst, was sich ja auch in der Überschrift ausdrückt, so das ich Dir dankbar bin, das Du jetzt wieder darauf zurückkommst.

                            Weiterhin habe ich auch Deinen Vorschlag zu dem multidimensionalen Array aufgegriffen und ich muß sagen, läßt sich sehr gut mit arbeiten.
                            Optimal währe es gewesen, wenn ich nicht alles manuel eintragen hätte müssen, sondern wenn ich die Namen definiert und die Trennzeichen eingegeben hätte, sollte das über den Code laufen, also automatisch eingelesen werden.
                            Kann ich ja vielleicht nur noch nicht.
                            Eine Unstimmigkeit bleibt noch, nähmlich der zusammengesetzte Link ist nach $TeilZeil[1] in der Datei Vorbereitet_Neu.txt unterbrochen. Also wenn ich den Link in der Datei markiere, wird nur der Teil bis einschlißlich $TeilZeil[1] markiert.
                            Weiß Du, woran das liegt und sagst es Uns hier?

                            Der Code:
                            PHP-Code:
                            <?php
                            $DatNam 
                            'Dateinamen.txt';
                            $handle fopen ($DatNam'w+');
                            fclose ($handle);
                            $VorbNeu 'Vorbereitet_Neu.txt';
                            $handle2 fopen ($VorbNeu'w+');
                            fclose ($handle2);
                            $ArbDat 'Vorbereitet.txt';
                            $ArbZ file ($ArbDat);

                            $chars = array(
                                
                            'replace' => array('A','A','A','A','a','a','a','a','Ae','ae','C','c','E','E','E','e','e','e','I','I','i','i','O','O','O',
                            'o','o','o','Oe','oe','U','u','Ue','ue',),
                                
                            'browser' => array('Á','À','Â','Ã','á','à','â','ã','Ä','ä','Ç','ç','É','È','Ê','é','è','ê','Í','Ì','í','ì','Õ','Ô','Ó',
                            'õ','ô','ó','Ö','ö','Ú','ú','Ü','ü',),
                                
                            'filesystem' => array('%C1','%C0','%C2','%C3','%E1','%E0','%E2','%E3','%C4','%E4','%C7','%E7','%C9','%C8','%CA','%E9',
                            '%E8','%EA','%CD','%CC','%ED','%EC','%D5','%D4','%D3','%F5','%F4','%F3','%D6','%F6','%DA','%FA','%DC','%FC',),
                                
                            'source' => array('&Aacute;','&Agrave;','&Acirc;','&Atilde;','&aacute;','&agrave;','&acirc;','&atilde;','&Auml;','&auml;',
                            '&Ccedil;','&ccedil;','&Eacute;','&Egrave;','&Ecirc;','&eacute;','&egrave;','&ecirc;','&Iacute;','&Igrave;',
                            '&iacute;','&igrave;','&Otilde;','&Ocirc;','&Oacute;','&otilde;','&ocirc;','&oacute;','&Ouml;','&ouml;','&Uacute;',
                            '&uacute;','&Uuml;','&uuml;',),
                            );

                            foreach (
                            $ArbZ as $value) { 
                                                            
                            $TeilZeil explode("#"$value);
                                                            
                            $TeilZeil[0] = str_replace(' ','',$TeilZeil[0]);
                                                            
                            $TeilZeil[1] = str_replace(' ','',$TeilZeil[1]);
                                                            
                            $TeilZeilRepl str_replace($chars['browser'], $chars['replace'], $TeilZeil[0]);
                                                            
                            $TeilZeilSour str_replace($chars['browser'], $chars['source'], $TeilZeil[0]);
                                                            
                            /*$handle = fopen ($DatNam, 'a');
                                                            file_put_contents ($DatNam , $TeilZeilRepl); // Speichert leider nur den letzten Namen, darum:*/
                                                            
                            $handle2 fopen ($VorbNeu 'a');
                                                            
                            fwrite ($handle2$TeilZeil[0].'#'.$TeilZeil[1].$TeilZeilRepl.'.php">'.$TeilZeilSour.'</a>'."\n");
                                                            
                            fclose ($handle2);
                                                            
                            $handle fopen ($DatNam 'a');
                                                            
                            fwrite ($handle$TeilZeilRepl."\n");
                                                            
                            fclose ($handle);
                                                      }
                            echo 
                            'Fertig';
                            ?>


                            <?php
                            Sieht doch schon viel übersichtlicher aus, denke ich.

                            Gruß
                            Estrela
                            Zuletzt geändert von Estrela; 28.06.2008, 21:02.
                            Denk positiv.

                            Kommentar


                            • #29
                              Okay, ich korrigiere mich: Dein Lösungsansatz ist unvollkommen und unvollständig.

                              Deiner kleinen Unstimmigkeit kommst du mit ein paar Testausgaben selbst auf die Spur.
                              Aber vorher solltest du mal vergleichen wie oft du eine Datei öffnest und wie oft das in meinem Pseudocode passiert.

                              Kommentar


                              • #30
                                Hallo onemorenerd.

                                Du arbeitest mit file, include und file_put_contens.
                                Bei meinem Code wird in jedem Durchgang der foreach Schleife die Datei geöffnet, beschrieben und geschlossen. OK, nicht sehr resourceschonend, aber es funktioniert.
                                Den Befehl file_put_contens bekomme ich nicht so eingesetzt, das er das gewünschte Ergebnis liefert.
                                Wie im Code des vorigen Postings in den auskommentierten Zeilen ersichtlich, habe ich ja versucht, den Befehl einzusetzen, aber er lieferte nur das letzte Wort.
                                Darüber kam ich zu der Erkenntnis, das er alles vorherige ja überschrieben hat, so das logischerweise auch nur der letzte Inhalt des letzten Durchgangs der foreach Schleife gespeichert ist. Also habe ich hier folgendes ausprobiert:

                                PHP-Code:
                                <?php
                                <?php
                                $DatNam 
                                'Dateinamen.txt';
                                $VorbNeu 'Vorbereitet_Neu.txt'
                                $ArbDat 'Vorbereitet.txt';
                                $ArbZ file ($ArbDat);

                                $chars = array(
                                    
                                'replace' => array('A','A','A','A','a','a','a','a','Ae','ae','C','c','E','E','E','e','e','e','I','I','i','i','O','O','O',
                                'o','o','o','Oe','oe','U','u','Ue','ue',),
                                    
                                'browser' => array('Á','À','Â','Ã','á','à','â','ã','Ä','ä','Ç','ç','É','È','Ê','é','è','ê','Í','Ì','í','ì','Õ','Ô','Ó',
                                'õ','ô','ó','Ö','ö','Ú','ú','Ü','ü',),
                                    
                                'filesystem' => array('%C1','%C0','%C2','%C3','%E1','%E0','%E2','%E3','%C4','%E4','%C7','%E7','%C9','%C8','%CA','%E9',
                                '%E8','%EA','%CD','%CC','%ED','%EC','%D5','%D4','%D3','%F5','%F4','%F3','%D6','%F6','%DA','%FA','%DC','%FC',),
                                    
                                'source' => array('&Aacute;','&Agrave;','&Acirc;','&Atilde;','&aacute;','&agrave;','&acirc;','&atilde;','&Auml;','&auml;','&Ccedil;','&ccedil;',
                                '&Eacute;','&Egrave;','&Ecirc;','&eacute;','&egrave;','&ecirc;','&Iacute;','&Igrave;','&iacute;','&igrave;','&Otilde;','&Ocirc;',
                                '&Oacute;','&otilde;','&ocirc;','&oacute;','&Ouml;','&ouml;','&Uacute;','&uacute;','&Uuml;','&uuml;',),
                                );

                                foreach (
                                $ArbZ as $value) { 
                                                                
                                $TeilZeil explode("#"$value);
                                                                
                                $TeilZeil[0] = str_replace(' ','',$TeilZeil[0]);
                                                                
                                $TeilZeil[1] = str_replace(' ','',$TeilZeil[1]);
                                                                
                                $TeilZeilRepl str_replace($chars['browser'], $chars['replace'], $TeilZeil[0]);
                                                                echo 
                                $TeilZeilRepl.'<br  />';
                                                                
                                file_put_contents ($DatNam $TeilZeilRepl['FILE_APPEND']);
                                                                
                                $TeilZeilSour str_replace($chars['browser'], $chars['source'], $TeilZeil[0]);
                                                                echo 
                                $TeilZeilSour.'<br  />';
                                                          }
                                file_put_contents ($VorbNeu $TeilZeil[0].'#'.$TeilZeil[1].$TeilZeilRepl.'.php">'.$TeilZeilSour.'</a>'."\n");

                                echo 
                                'Fertig';

                                ?>
                                Die ersten Dateiöffnungen mit w+ konnte ich ja weglassen, weil file_put_contens sowieso alles überschreibt.
                                Weil dieser Befehl ja hier in der Schleife eingesetzt ist, habe ich versucht, das Flag FILE_APPEND zu setzen, um die Daten in der nächsten Zeile anzuhängen.
                                Aber entgegen der Vermutung steht jetzt nur noch ein Buchstabe in der Datei.
                                Den letzten Einsatz des file_put_contens habe ich außerhalb der Schleife plaziert, trotzdem liefert er nur den letzten Eintrag.
                                Ich komme also zu dem Schluß, das ich den Befehl file_put_contens hier nicht richtig einsetzen kann.
                                Kannst Du mir zeigen, wie der Befehl hier richtig eingesetzt wird?
                                Danach kümmere ich mich um die Includierung der Sonderzeichen, um die händischen Eintragungen zu umgehen und danach um die nicht zusammen hängenden Satzteile.

                                Gruß
                                Estrela

                                Edit: Die echo´s zeigen überigens alles vollständig an.
                                Zuletzt geändert von Estrela; 01.07.2008, 15:35.
                                Denk positiv.

                                Kommentar

                                Lädt...
                                X