Sitemap bestimmte Dateien ausschließen

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

  • Sitemap bestimmte Dateien ausschließen

    Hallo,
    ich lasse mir mit folgenden Code eine Sitemap erstellen.

    PHP-Code:
    <?php
    // Dateien mit dieser Dateiendung auflisten
    $dateiendung =".php";

    // Verzeichnisse angeben
    $verzeichnis[0] = "./";

    for (
    $i=0$i count($verzeichnis); $i++) {
     echo 
    "<br><b>".$verzeichnis[$i]."</b><br>";
     
    $verz opendir($verzeichnis[$i]);  // Verzeichnis wird geöffnet
       
    while ($file readdir($verz)) { 
        if (
    $file != substr_count($file$dateiendung) && $file != "." && $file != "..") {
         
    $regs "";
         
    $datei fopen($verzeichnis[$i].$file"r"); // Datei wird geöffnet
         
    $inhalt fread($datei1000);  // Datei wird eingelesen
         
    preg_match("/<title>(.*?)</i"$inhalt$regs); // Text aus <title>-Tag wird extrahiert
         
    if ($regs[1] == "") {$regs[1] = "-Ohne Titel-";} // Kein Titel vorhanden!
         // Link wird erzeugt. "nofollow" für Google Spam-Links!
         
    echo "<a href=\"$verzeichnis[$i]$file\" rel=\"nofollow\">$regs[1]</a><br>\r";
         
    fclose($datei); // Datei wird geschlossen
       
    }
      }
     
    closedir($verz); // Verzeichnis wird geschlossen
    }
    ?>
    Das klappt auch soweit.

    Meine Frage jetzt: Wie könnte ich den bestimmte Dateien auschließen, dass Sie nicht auf der Sitemap angezeigt werden?

    mfg
    Freetz

  • #2
    Mit einer Blacklist.

    Kommentar


    • #3
      Zitat von Freetz Beitrag anzeigen
      PHP-Code:
      if ($file != substr_count($file$dateiendung) && $file != "." && $file != "..") { 
      Diese Zeile entscheidet darüber, ob eine Datei aufgenommen wird oder nicht. Also musst du deine Zusatzbedingungen da einfach nur einbauen.

      Kannst du PHP? Ist das Skript von dir?

      Gruß,

      Amica
      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
      Super, danke!
      [/COLOR]

      Kommentar


      • #4
        Ok danke schön. Hab das mal versucht zu programmieren und es funktioniert nicht ganz.

        Hier mal der Code:

        PHP-Code:
        <?php
        // Dateien mit dieser Dateiendung auflisten
        $dateiendung =".php";

        // Verzeichnisse angeben
        $verzeichnis[0] = "./";

        for (
        $i=0$i count($verzeichnis); $i++) {
         echo 
        "<br><b>".$verzeichnis[$i]."</b><br>";
         
        $verz opendir($verzeichnis[$i]);  // Verzeichnis wird geöffnet
         
        $datei "blacklist.txt";
         
        $array file($datei);

          while (
        $file readdir($verz)) { 
            if (
        $file != substr_count($file$dateiendung) && $file != "." && $file != "..") {
             
        $regs "";
             
        $datei fopen($verzeichnis[$i].$file"r"); // Datei wird geöffnet
             
        $inhalt fread($datei1000);  // Datei wird eingelesen
             
        preg_match("/<title>(.*?)</i"$inhalt$regs); // Text aus <title>-Tag wird extrahiert
             
        if ($regs[1] == "") {$regs[1] = "-Ohne Titel-";} // Kein Titel vorhanden!
             // Link wird erzeugt. "nofollow" für Google Spam-Links
             
        if (!in_array($file$array)) {         
                 echo 
        "<a href=\"$verzeichnis[$i]$file\" rel=\"nofollow\">$regs[1]</a><br>\r";
                 }
             
        fclose($datei); // Datei wird geschlossen
           
        }
          }
         
        closedir($verz); // Verzeichnis wird geschlossen
         
        fclose($datei);
        }
        ?>
        Also ich habe in der Blacklist.txt zwei Einträge. Das Problem ist jetzt aber, dass nur der erste Eintrag ignoriert wird aber der zweite und demensprechend auch der dritte oder vierte wird einfach ingnoriert.

        Wie kann ich das Problem lösen?

        mfg
        Freetz

        Kommentar


        • #5
          *lösch* sorry, hab da wohl was übersehen...
          Zuletzt geändert von AmicaNoctis; 18.01.2010, 22:42.
          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
          Super, danke!
          [/COLOR]

          Kommentar


          • #6
            also ich bin kein Profi aber auch eigentlich kein anfänger mehr. Den Code habe ich aus einem Forum und wollte es nur neu erfinden.

            ok, das ich die Variable $datei überschreibe habe ich jetzt festgestellt. habe auch mittlerweile gemerkt, das jeweils nur der letzte Eintrag aus der Blacklist.txt ignoriert wird.

            Aber irgendwie stehe ich gerade auf dem Schlauch.

            mfg
            Freetz

            Kommentar


            • #7
              Ok, hab meinen Beitrag geändert. Das Überschreiben von $datei ist nicht das Problem. Sieh dir mal das Array an. Insbesondere den Unterschied zwischen den ersten Einträgen und dem letzten. Dann kommst du drauf, warum er nur die letzte Zeile mit in_array findet.

              Edit: Steht übrigens auch in der Doku zu file nochmal ausdrücklich.
              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
              Super, danke!
              [/COLOR]

              Kommentar


              • #8
                ok jetzt habe ich es schonmal hinbekommen, dass alle zeilen in das Array gespeichert werden.

                Habe jetzt aus:

                PHP-Code:
                 $array file($datei1); 
                PHP-Code:
                 $array readfile($datei1); 
                gemacht. Wenn ich mir danach das Araay ausgeben lassen, erscheien alle Einträge.

                Jetzt kommt nur die Fehlermeldung:

                PHP-Code:
                Warning:  in_array() expects parameter 2 to be array, integer given in /Applications/XAMPP/xamppfiles/htdocs/lasoft/sitemap.php on line 21 
                mfg
                Freetz

                Kommentar


                • #9
                  Zitat von Freetz Beitrag anzeigen
                  ok jetzt habe ich es schonmal hinbekommen, dass alle zeilen in das Array gespeichert werden.
                  Nein, das hattest du vorher.

                  Habe jetzt aus:
                  PHP-Code:
                   $array file($datei1); 
                  PHP-Code:
                   $array readfile($datei1); 
                  gemacht. Wenn ich mir danach das Araay ausgeben lassen, erscheien alle Einträge.
                  Nein, nicht danach, sondern während readfile ausgeführt wird, erscheinen alle Einträge.
                  Und nein, $array ist jetzt kein Array mehr.

                  Jetzt kommt nur die Fehlermeldung:

                  PHP-Code:
                  Warning:  in_array() expects parameter 2 to be array, integer given 
                  Natürlich, denn readfile gibt ja nur die Anzahl der gelesenen Bytes zurück.


                  Bleibe bei file(), und lese den Manual-Eintrag dazu noch mal.
                  Befolge den Hinweis, dir die einzelnen Einträge des Arrays mal genau anzusehen - var_dump hilft dabei; vorher <pre> auszugeben, erhöht die Übersichtlichkeit.
                  Zuletzt geändert von wahsaga; 18.01.2010, 23:24.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    @Freetz, bitte nutze für Fehlermeldung die [Quote]-Tags und nicht die [PHP]-Tags. Dein Posting kannst du über den "Ändern"-Button anpassen. Danke!

                    Kommentar


                    • #11
                      Nein, bitte kein [quote], das erschwert das Zitieren.

                      [code], und umbrechen, so das nicht überbreit.
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Wieso sollte es schwieriger werden eine
                        Fehlermeldung in Quote-Tags
                        zu zitieren?
                        [edit]Okay, weil das Forum bei Nutzung der "Zitat"-Buttons die Quotes entfernt. Hmm, naja. Alles nicht optimal.

                        Kommentar

                        Lädt...
                        X