| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

18-01-2010, 21:34
|
|
Freetz
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 12
|
|
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($datei, 1000); // 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
|

18-01-2010, 21:46
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Mit einer Blacklist.
|

18-01-2010, 22:11
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Zitat:
Zitat von Freetz
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
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

18-01-2010, 22:33
|
|
Freetz
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 12
|
|
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($datei, 1000); // 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
|

18-01-2010, 22:37
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
*lösch* sorry, hab da wohl was übersehen...
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (18-01-2010 um 22:42 Uhr)
|

18-01-2010, 22:42
|
|
Freetz
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 12
|
|
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
|

18-01-2010, 22:45
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
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.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

18-01-2010, 22:58
|
|
Freetz
Registrierter Benutzer
|
|
Registriert seit: Nov 2009
Beiträge: 12
|
|
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
|

18-01-2010, 23:22
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von Freetz
ok jetzt habe ich es schonmal hinbekommen, dass alle zeilen in das Array gespeichert werden.
|
Nein, das hattest du vorher.
Zitat:
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.
Zitat:
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.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Geändert von wahsaga (18-01-2010 um 23:24 Uhr)
|

19-01-2010, 00:25
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
@Freetz, bitte nutze für Fehlermeldung die [Quote]-Tags und nicht die [PHP]-Tags. Dein Posting kannst du über den "Ändern"-Button anpassen. Danke!
|

19-01-2010, 00:45
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
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.
|

19-01-2010, 00:57
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.188
|
|
Wieso sollte es schwieriger werden eine
Zitat:
Zitat:
|
Fehlermeldung in Quote-Tags
|
zu zitieren?
|
[edit]Okay, weil das Forum bei Nutzung der "Zitat"-Buttons die Quotes entfernt. Hmm, naja. Alles nicht optimal.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|