Grundlagenstudium: Textmanipulationen mit PHP

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

  • Grundlagenstudium: Textmanipulationen mit PHP

    Hallo zusammen.

    Meinen neuesten Erkenntnissen gemäß möchte ich jetzt meine Textdateien umgestalten.

    Istzustand:

    <h1>1. Überschrift</h1>

    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>

    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>
    <div class="texth1">Text portugiesisch</div>
    <div class="silber"> Deutsche Übersetzung</div>


    Sollzustand:

    <dl>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>

    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    <dt>Text portugiesisch</dt>
    <dd> Deutsche Übersetzung</dd>
    </dl>

    Aufgabenstellung:

    Der Code soll mit Aufruf über den Browser ausgeführt werden.
    Es sollen alle Dateien im Ordner der Reihe nach bearbeitet werden.

    Ablaufplan:

    Stelle fest, welche Dateien im Ordner liegen.
    Öffne erste Datei.
    Suche die erste Leerzeile.
    Füge ein <dl> ein.

    Schleife bis Ende Datei:

    Suche <div class="texth1">
    Ersetze mit <dt>
    Suche in der selben Zeile das </div>
    Ersetze mit </dt>
    Suche <div class="silber">
    Ersetze mit <dd>
    Suche in der selben Zeile das </div>
    Ersetze mit </dd>
    Ende Schleife

    Füge ein </dl> in die letzte freie Zeile der Datei.
    Wenn keine vorhanden, Leerzeile einfügen.

    Datei speichern.
    Nächste Datei.


    Befehle:
    resource opendir ( string $path [, resource $context ] )
    string readdir ( resource $dir_handle )
    resource fopen ( string $filename , string $mode )
    str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
    fclose ( resource $handle )

    Bevor ich mich dann im einzelen mit der konkreten Umsetzung beschäftige, möchte ich hier mal nachfragen, ob die Ablauflogik soweit in Ordnung ist, die Befehle vollständig sind und ob es eventuell sinnvollere Befehle gibt, die ich einsetzen könnte.

    Gruß
    Estrela
    Denk positiv.

  • #2
    Ganz ehrlich:

    Da es eine einmalige Aktion ist, Texteditor: Suchen & Ersetzen in allen Dateien, Fertig.

    Kommentar


    • #3
      Ich würde statt str_replace() preg_replace() verwenden. Da kannst du die Anfangs- und Endtags gleichzeitig bearbeiten.
      Gruss
      H2O

      Kommentar


      • #4
        Ich würde statt str_replace() preg_replace() verwenden. Da kannst du die Anfangs- und Endtags gleichzeitig bearbeiten.
        Ob das eine bedeutender Vorteil gegenüber der Stringfunktion ist, wage ich zu bezweifeln.

        Kommentar


        • #5
          Hallo TobiaZ.

          Habe ich auch zuerst dran gedacht.

          Dagegen sprechen aber aus meiner Sicht zwei Gründe.

          1. Ich möchte ja php lernen, da nutze ich diese Gelegenheit, um Erfahrungen zu sammeln.

          2. Das letzte </dl>, das bekomme ich mit Suchen und Ersetzen nicht rein.


          @H2O
          Danke für Deinen Hinweis, werde ich mir mal anschauen.

          Gruß
          Estrela
          Denk positiv.

          Kommentar


          • #6
            2. Das letzte </dl>, das bekomme ich mit Suchen und Ersetzen nicht rein.
            Mittels regulären Ausdrücken, sollte das auch dein Texteditor können.

            Kommentar


            • #7
              Hallo TobiaZ.

              Abgesehen davon, das mir kein passender regulärer Ausdruck einfällt, kann mein Texteditor nur Suchen und Ersetzen.
              Weiterhin bliebe noch Punkt 1.

              Gruß
              Estrela
              Denk positiv.

              Kommentar


              • #8
                Klar, zwingt dich ja keiner...

                Kommentar


                • #9
                  sehr konstruktiv und förderlich
                  Denk positiv.

                  Kommentar


                  • #10
                    Für class="texth1" --> http://regexp-evaluator.de/evaluator...2e01/#ergebnis und für den Rest hast du den RegExp schnell angepasst
                    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


                    • #11
                      resource opendir ( string $path [, resource $context ] )
                      string readdir ( resource $dir_handle )
                      glob

                      resource fopen ( string $filename , string $mode )
                      file_get_contents

                      str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
                      imho okay, ansonsten preg_replace

                      fclose ( resource $handle )
                      dann überflüssig.

                      Kommentar


                      • #12
                        Original geschrieben von Estrela
                        ... kann mein Texteditor nur Suchen und Ersetzen
                        Wie liebe ich doch zwischendurch den guten alten vi

                        REGEX:
                        PHP-Code:
                        $zeile preg_replace('|<div class="texth1">(.+)</div|U'
                                                
                        '<dt>$1</dt>'
                                                
                        preg_replace('|<div class="silber">(.*)</div>|U'
                                                                
                        '<dd>$i</dd>'
                                                                
                        $zeile
                                                
                        )
                                ); 
                        Gruss
                        H2O

                        Kommentar


                        • #13
                          Hallo jahlives.
                          Echt guter Verweis zur Behandlung und Herstellung von regulären Ausdrücken. Danke.

                          @ TobiaZ.

                          Ja danke. Deinen ersten Abschnitt versuche ich gerade umzusetzen.
                          Bis zum ersten echo funktioniert es.
                          Aber jetzt weiß ich nicht, ob ich erfolgreich die Datei mit Schreib- und Lesezugriff der Variablen $OffeneDatei zugewiesen habe.
                          Kommt nähmlich nur eine Warnmeldung:
                          Warning: fopen(icon) [function.fopen]: failed to open stream: No such file or directory in /home/
                          Mir brummt auch ein wenig der Schädel.
                          Ist das jetzt, bis auf´s letzte echo, soweit richtig, so das ich dann mit file_get_contents
                          weitermachen kann?

                          <?php
                          $Arbeitsordner = "../";
                          $Ordnerinhalt = opendir($Arbeitsordner);
                          while (($file = readdir($Ordnerinhalt)) !== false) {
                          //echo "$file"."<br>";
                          $OffeneDatei = fopen ($file, "r+");
                          echo $OffeneDatei;
                          }
                          ?>

                          @H2O
                          Ja danke Dir, kann ich im nächsten Schritt sehr gut gebrauchen.

                          Gruß
                          Estrela
                          Denk positiv.

                          Kommentar


                          • #14
                            Warning: fopen(icon) [function.fopen]: failed to open stream: No such file or directory in /home/
                            Der brummt mir auch, wenn ich sehe, dass du versuchst eine Datei zu öffnen, die nicht existiert.

                            Kommentar


                            • #15
                              Hallo.

                              Nochmal auf Deutsch:

                              Ich habe der Variablen $Arbeitsordner den Pfad zugewiesen.
                              Weiterhin der Variablen $Ordnerinhalt die Auflistung des Arbeitsordners.
                              Schleife:
                              Weil --> Variablenzuweisung = ist noch am lesen ungleich falsch
                              // Also Zeiger steht auf der ersten Datei, noch nicht am Ende
                              $OffeneDatei = die gerade gelesene Datei// fopen ($file,);
                              $Text = Einladen des Inhalts der offenen Datei
                              Testausgabe = Warning: fopen(31.php) [function.fopen]: failed to open stream: Permission denied in /home/
                              Ende Schleife

                              <?php
                              $Arbeitsordner = "test/php/";
                              $Ordnerinhalt = opendir($Arbeitsordner);
                              while (($file = readdir($Ordnerinhalt)) !== false) {
                              $OffeneDatei = fopen ("$file", "r+");
                              $Text = file_get_contents ("$OffeneDatei");
                              echo $Text;
                              }

                              ?>

                              Wie ermögliche ich den Zugriff?
                              Dateiattribute stehen auf 777.

                              Gruß
                              Estrela
                              Zuletzt geändert von Estrela; 17.06.2008, 18:26.
                              Denk positiv.

                              Kommentar

                              Lädt...
                              X