Title-Tags usw. aus htm-Dateien auslesen

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

  • Title-Tags usw. aus htm-Dateien auslesen

    Hi,

    ich hab in jeder htm-Datei in der ersten Zeile einen Verantwortlichen (auskommentiert) stehen. Mit folgendem Code lasse ich nun in allen htm-Dateien den Dateinamen, den Verantwortlichen und den Title-Tag auslesen.

    Klappt soweit eigentlich ganz gut, nur wenn jetzt z.b. kein Verantwortlicher in der Datei drin ist, dann wird mir der Title-Tag logischerweise gleich in die zweite Spalte geschrieben und die dritte bleibt leer. So passen natürlich dann die Überschriften nicht mehr.

    Wie muss ich unteren Code abändern, damit trotzdem eine td-Zelle gemacht wird, auch wenn KEIN Verantwortlicher oder Titel gefunden wird?
    PHP-Code:
    <?php 
    echo "<table border=\"1\" width=\"60%\">"
    echo 
    "<tr><th colspan=\"3\" align=\"center\">Root-Verzeichnis</th></tr>
          <tr><td width=\"33%\" bgcolor=\"#000000\">
          <font color=\"#ffffff\">Datei</font></td> 
          <td width=\"33%\" bgcolor=\"#000000\">
          <font color=\"#ffffff\">Verantwortlicher</font></td> 
          <td width=\"33%\" bgcolor=\"#000000\">
          <font color=\"#ffffff\">Titel</font></td> 
          </tr>"


    $path="/homepages/29/d117****/htdocs/immo"
    $handle=opendir ($path); 

    while(
    $datei readdir($handle)) { 
    if (
    preg_match('/^\w+\.htm$/'$datei)) { 

    echo 
    "<tr>"
    echo 
    "<td width=\"33%\">$datei</td>"

    $fp fopen($datei"r"); 
    if (!
    $fp) { 
       echo 
    "Datei ($datei) konnte nicht geöffnet werden."
       exit; 


         while (!
    feof ($fp)) { 
         
    $line fgets($fp,1024); 

       if (
    eregi ("<!--(.*)//-->"$line$verantwortlicher)) { 
            echo 
    "<td width=\"33%\">".$verantwortlicher[1]."</td>"
         } 
         if (
    eregi ("<title>(.*)</title>"$line$titel)) { 
         echo 
    "<td width=\"33%\">".$titel[1]."</td>"
         } 
       } 
    echo 
    "</tr>"

    fclose($fp); 




    echo 
    "</table>"
    ?>
    Wenn ich nach dem
    PHP-Code:
    if (eregi ("<title>(.*)</title>"$line$titel)) { 
         echo 
    "<td width=\"33%\">\".$titel[1]."</td>"; 
         } 
    ein else rein mache, dann passt gar nichts mehr

    DANKE
    Zuletzt geändert von Heart; 01.07.2004, 13:55.
    Gruß
    Heart

  • #2
    Re: Title-Tags usw. aus htm-Dateien auslesen

    ein else rein mache, dann passt gar nichts mehr
    klar! wenn kein titel/verantw., dann eine zelle ausgeben, die nix beinhaltet. &amp;nbsp; zb.

    danke für den überbreiten beitrag!
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hmmm, dann müsste ja z.b.
      PHP-Code:
      if (eregi ("<title>(.*)</title>"$line$titel)) { 
           echo 
      "<td width=\"33%\">".$titel[1]."</td>"
           } 
      zu
      PHP-Code:
      if (eregi ("<title>(.*)</title>"$line$titel)) { 
           echo 
      "<td width=\"33%\">".$titel[1]."</td>"
           } else {
           echo 
      "<td width=\"33%\">&nbsp;</td>"
           } 
      werden, oder nicht!?

      Wenn ich das so mache, dann passt eben gar nichts mehr, wenn ich das Skript aufrufe
      Gruß
      Heart

      Kommentar


      • #4
        Wenn ich das so mache, dann passt eben gar nichts mehr,
        das heißt was genau?

        würdest du bitte den oberen beitrag so umbrechen, daß ein ewiges horizontales scrollen nicht nötig ist?. danke.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Ok, habe den ersten Beitrag etwas "umgebrochen", sorry hab hier große Auflösung, da kam bei mir nie ein hor. Scrollbalken...

          Nun zum Problem. So sieht die Ausgabe mit o.g. Skript aus

          Wie man sieht, ist nur bei der finanzierung.htm ein Verantwortlicher im Code hinterlegt. Bei allen anderen Dateien rutscht der Titel ins Feld des Verantwortlichen...

          Wenn ich nun die Zeilen für den $verantwortlichen zu
          PHP-Code:
             if (eregi ("<!--(.*)//-->"$line$verantwortlicher)) {
                  echo 
          "<td width=\"33%\">".$verantwortlicher[1]."</td>";
             } else {
               echo 
          "<td width=\"33%\">&nbsp;</td>"
               } 
          mache, dann sieht die Ausgabe so aus
          Gruß
          Heart

          Kommentar


          • #6
            Ok, habe den ersten Beitrag etwas "umgebrochen", sorry hab hier große Auflösung, da kam bei mir nie ein hor. Scrollbalken...
            alles klar. fullscreen hab ich 1600pix, habe ca. 50% gesehen. du surfst also auf einer 3200 auflösung. respekt, meine augen geben das leider nicht her.

            würdest du freundlicherweise den erzeugten html-code posten?
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              Original geschrieben von Heart
              Wenn ich nun die Zeilen für den $verantwortlichen zu
              PHP-Code:
                 if (eregi ("<!--(.*)//-->"$line$verantwortlicher)) ... 
              mache, dann sieht die Ausgabe so aus
              du wendest diese zeile ja auch mehrmals an - innerhalb von
              PHP-Code:
              while (!feof ($fp)) { 
                   
              $line fgets($fp,1024); 
              du liest immer 1024 bytes aus, und schaust dann darin nach, ob <!-- ... //--> enthalten ist - wenn ja, ausgabe des verantwortlichen, wenn nein, leere tabellenzelle.

              dass das bei dateien > 1024 bytes auch entsprechend mehr tabellenzellen gibt, sollte logisch sein.

              und ausserdem ist die begrenzung auf 1024 bytes eh unfug - was, wenn <!-- im ersten solchen 1024er-block steht, und //--> im zweiten? dann findet dein ausdruck gar nichts, obwohl es in der datei drinsteht ...


              du musst also erstmal die komplette datei in einen string einlesen, und dann da den suchausdruck drüber jagen ...
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                und wie wär's mit:
                PHP-Code:
                echo "<td width=\"33%\">";
                if (
                eregi ("<!--(.*)//-->"$line$verantwortlicher)) echo $verantwortlicher[1];
                else echo 
                '&nbsp;';
                echo 
                "</td>\n<td width=\"33%\">"
                if (
                eregi ("<title>(.*)</title>"$line$titel)) echo $titel[1];
                else echo 
                '&nbsp;';
                echo 
                "</td>\n"

                Kommentar


                • #9
                  du musst also erstmal die komplette datei in einen string einlesen, und dann da den suchausdruck drüber jagen...
                  Code wäre dafür z.b.?

                  Original geschrieben von asp2php
                  und wie wär's mit:
                  PHP-Code:
                  echo "<td width=\"33%\">";
                  if (
                  eregi ("<!--(.*)//-->"$line$verantwortlicher)) echo $verantwortlicher[1];
                  else echo 
                  '&nbsp;';
                  echo 
                  "</td>\n<td width=\"33%\">"
                  if (
                  eregi ("<title>(.*)</title>"$line$titel)) echo $titel[1];
                  else echo 
                  '&nbsp;';
                  echo 
                  "</td>\n"
                  Dann schaut es ungefähr so aus wie auf dem 2. Bild oben

                  Der Quelltext dazu ist dann:
                  "<table border="1" width="60%"><tr><th colspan="3" align="center">Root-Verzeichnis</th></tr>
                  <tr><td width="33%" bgcolor="#000000"><font color="#ffffff">Datei</font></td>
                  <td width="33%" bgcolor="#000000"><font color="#ffffff">Verantwortlicher</font></td>
                  <td width="33%" bgcolor="#000000"><font color="#ffffff">Titel</font></td>
                  </tr><tr><td width="33%">finanzierung.htm</td><td width="33%"> Testperson </td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">Finanzierung</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  <td width="33%">&nbsp;</td>
                  ....zig weitere solche "leeren" tds folgen...
                  Zuletzt geändert von Heart; 01.07.2004, 14:42.
                  Gruß
                  Heart

                  Kommentar


                  • #10
                    Original geschrieben von Heart
                    Code wäre dafür z.b.?
                    zeig ihn uns, so bald du ihn entwickelt hast :-)


                    (ein bisschen selber nachdenken musst du schon noch ...)
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Ok, lade jetzt die file in ein String. Jetzt tritt aber ein "Phänomen" auf, was ich nicht ganz verstehe

                      Mache ich
                      PHP-Code:
                      while($datei readdir($handle)) {
                      if (
                      preg_match('/^\w+\.htm$/'$datei)) {

                      $filearray file("$datei"); 
                      $filestring implode("",$filearray);

                      echo 
                      "<tr>";
                      echo 
                      "<td width=\"33%\">$datei</td>";

                      echo 
                      "<td width=\"33%\">";
                      if (
                      eregi ("!!!!(.*)!!!!"$filestring$verantwortlicher)) echo $verantwortlicher[1];
                      else echo 
                      '&nbsp;';
                      echo 
                      "</td>";
                         
                      echo 
                      "</tr>";

                      }

                      ...so passt alles, es werden alle 18 *.htm-Dateien, die im Ordner sind richtig ausgegeben.

                      Füge ich unter dem Verantworlichen, aber noch folgende Zeilen hinzu
                      PHP-Code:
                      echo "<td width=\"33%\">"
                      if (
                      eregi ("<title>(.*)</title>"$filestring$titel)) echo $titel[1];
                      else echo 
                      '&nbsp;';
                      echo 
                      "</td>"
                      Dann stimmt die Ausgabe zwar auch perfekt, aber es fehlen Dateien!? So werden nur noch 10 von 18 im Ordner befindlichen *.htm-Dateien aufgelistet.

                      Warum das??
                      Gruß
                      Heart

                      Kommentar


                      • #12
                        und, elementarstes debugging in so einem fall?
                        erst mal eine kontrollausgabe der dateinamen innerhalb der while-schleife, um zu sehen, welche dateien überprüft werden.

                        ergibt ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Ja, wenn ich in der while-Schleife nur $datei ausgeben lasse, dann kommen alle 18 Dateien.

                          Nehm ich die Zeilen für den $verantwortlichen hinzu, kommen auch alle 18 Dateien.

                          Nehm ich die Zeilen für den $titel hinzu, kommen nur noch 10 Dateien.

                          Wie gesagt, ein Rätsel für mich
                          Gruß
                          Heart

                          Kommentar


                          • #14
                            Nehm ich die Zeilen für den $titel hinzu, kommen nur noch 10 Dateien.
                            wenn du eine lösung willst, poste den code ... und die ausgaben ...
                            Die Zeit hat ihre Kinder längst gefressen

                            Kommentar


                            • #15
                              .....ahhh Problem erkannt!

                              Es waren bei der letzten Datei, die mir das Skript lieferte 2 <title>-Tags im Quellcode, darum wurde das Skript wohl "gestopp"....

                              (Kann ich das irgendwie ausfiltern, dass bei 2 Vorkommen -auch beim Verantwortlichen- nur das erste genommen wird?)
                              Gruß
                              Heart

                              Kommentar

                              Lädt...
                              X