Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP][Gelöst] *.html Dateien auslesen und verarbeiten :( (https://www.delphipraxis.net/49821-%5Bphp%5D%5Bgeloest%5D-%2A-html-dateien-auslesen-und-verarbeiten.html)

Master_RC 16. Jul 2005 12:21


[PHP][Gelöst] *.html Dateien auslesen und verarbeiten :(
 
hi leutz, hab ein riesen-problem! :'(

also...
ich muss aus einem Ordner alle HTML-Dateien auslesen.

so...
diese sehen wie folgt aus, Beispiel:
2005-05-01.html
also: YYYY-MM-DD.html

so...
wie mache ich dass, dass ich dann alle solche dateien (und nur solche!) auslese und dann zu jedem in chronologischr Reihenfolge einen Link erstelle?

Bin wirklich am Verzweifeln, das ist nämlich für einen Auftrag und der sollte schnellstmöglich beendet werden :(


Noch schnell ein Beispiel:
Im Ordner enthalten: 2005-05-01.html | 2005-06-23.html

sollte dann in ungefähr so aussehen:
News vom 23.6.2005 [2005-06-23.html]
News vom 1.5.2005 [2005-05-01.html]

phXql 16. Jul 2005 14:09

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Zitat:

Zitat von Master_RC
hi leutz, hab ein riesen-problem! :'(

also...
ich muss aus einem Ordner alle HTML-Dateien auslesen.

so...
diese sehen wie folgt aus, Beispiel:
2005-05-01.html
also: YYYY-MM-DD.html

so...
wie mache ich dass, dass ich dann alle solche dateien (und nur solche!) auslese und dann zu jedem in chronologischr Reihenfolge einen Link erstelle?

Bin wirklich am Verzweifeln, das ist nämlich für einen Auftrag und der sollte schnellstmöglich beendet werden :(


Noch schnell ein Beispiel:
Im Ordner enthalten: 2005-05-01.html | 2005-06-23.html

sollte dann in ungefähr so aussehen:
News vom 23.6.2005 [2005-06-23.html]
News vom 1.5.2005 [2005-05-01.html]

Such mal in SelfPHP nach opendir(), readdir() und closedir(). Mit diesen Funktionen sollte das zu machen sein.

dahead 16. Jul 2005 14:13

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
och, falsche Rubrik, falsche Antwort, sorry.

Master_RC 16. Jul 2005 14:23

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Zitat:

Zitat von phXql
Such mal in SelfPHP nach opendir(), readdir() und closedir(). Mit diesen Funktionen sollte das zu machen sein.

ich habs schon selbst versucht, klappt aber nicht so ganz... :'(

phXql 16. Jul 2005 14:26

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Zitat:

Zitat von Master_RC
Zitat:

Zitat von phXql
Such mal in SelfPHP nach opendir(), readdir() und closedir(). Mit diesen Funktionen sollte das zu machen sein.

ich habs schon selbst versucht, klappt aber nicht so ganz... :'(

dann geh auf php.net, und lad dir dort das CHM für die PHP-Hilfe runter. dort is bei readdir() auch ein beispiel dabei..

Airblader 16. Jul 2005 15:12

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Mal etwas Code:

Code:
<?php
$hDir = "ordner/"; // Dein Ordner
$hHandle = opendir($hDir); // Handle zum Ordner

$FileNames = Array(); // Array initialisieren

// In einer Schleife alle Dateien holen, die zugelassen sind
while($file == readdir($hHandle) && $file != "." && $file != ".." && substr($file, -5) == ".html" && is_file($file))
{
   $FileNames[] = substr($file, strlen($file)-5); // Dateinamen in Array einlesen
}

closedir($hHandle); // Handle wieder schließen
?>
Nun hast du in $FileNames alle Dateinamen ohne Extension, aber nur von den Dateien, die auf .html enden (*.html).

Das kannst du nun umbauen und dadurch die Ausgabe erzeugen.

air

Neuni 16. Jul 2005 15:14

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Also ich würds so machen:
Code:
<?php

//öffnen des ordners
$handle=opendir("derordner/");

$daten = array();

//auslesen der dateien
while ($file = readdir($handle)) {

//datum aus dateinamen filtern
$datum = split('-',$file);

$jahr = $datum[0];
$monat = $datum[1];
$tag1 = $datum[2];

$tag = $tag[0].$tag[1];

//timestamp erzeugen
$timestamp = mktime(0,0,0,$monat,$tag,$jahr);

//ab ins array :)
$daten[] = $timestamp;

}

closedir($handle);

//sortieren
sort($daten);
reset($daten);

//Array-daten zählen
$gesammt = count($daten);

//ausgeben
for($i=0; $i<$gesammt; $i++) {

$tag = date('j',$daten[$i]);
$monat = date('n',$daten[$i]);
$jahr = date('Y',$daten[$i]);

$dateiname = $jahr.'-'.$monat.'-'.$tag.'.html';

echo '[url="'.$dateiname.'"]News vom '.$tag.'.'.$monat.'.'.$jahr.'[/url]
';

}


?>
^^Nicht getstet, also bestimmt Fehler drin, sollte aber so funktionieren.

Master_RC 16. Jul 2005 15:35

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
mensch, ihr seid einfach genial!

ich werds dann gleich mal ausprobieren! :)

Delphi-Freak 16. Jul 2005 15:49

Re: [PHP] *.html Dateien auslesen und verarbeiten :(
 
Zum Testen, ob die Datei dem Schema folgt, (und dann auch gleich zum splitten) könnte man auch Reguläre Audrücke verwenden:
etwa so:
Code:
//while...
if(preg_match("/([0-9]{4})\-([0-9]{2})\-([0-9]{2})\.html/", $file, $treffer)) {
   echo "News vom {$treffer[3]}.{$treffer[2]}.{$treffer[1]} [{$file}]";
}
//...
LG

Master_RC 16. Jul 2005 20:26

Re: [PHP][Gelöst] *.html Dateien auslesen und verarbeiten :(
 
gut, musste zwar noch ein wenig herumtüfteln, aber schließlich kam das raus:

Code:
<?php

//öffnen des ordners
$handle=opendir("news/");

$daten = array();

//auslesen der dateien
while ($file = readdir($handle)) {
if(preg_match("/([0-9]{4})\-([0-9]{2})\-([0-9]{2})\.html/", $file, $treffer)) {

//datum aus dateinamen filtern
$datum = split('-',$file);

$jahr = $datum[0];
$monat = $datum[1];
$tag = $datum[2];

//$tag = $tag[0].$tag[1];

//timestamp erzeugen
$timestamp = mktime(0,0,0,$monat,$tag,$jahr);

//ab ins array :)
$daten[] = $timestamp;
}
}

closedir($handle);

//sortieren
rsort($daten);
reset($daten);

//Array-daten zählen
$gesammt = count($daten);

$tag2 = array();
$monat = array();
$jahr = array();

//ausgeben
for($i=0; $i<$gesammt; $i++) {

$tag2[$i] = date('d',$daten[$i]);
$monat[$i] = date('m',$daten[$i]);
$jahr[$i] = date('Y',$daten[$i]);

$dateiname = $jahr[$i].'-'.$monat[$i].'-'.$tag2[$i].'.html';

echo "<a href='news/".$dateiname."'>News vom ".$tag2[$i].". ".$monat[$i].".";

}


?>
funktioniert einwandfrei :thumb:

Airblader 16. Jul 2005 20:31

Re: [PHP][Gelöst] *.html Dateien auslesen und verarbeiten :(
 
Ein Hinweis zur deutschen Grammatik:

Es heißt Gesamt und nicht Gesammt ;)

air

Neuni 16. Jul 2005 20:34

Re: [PHP][Gelöst] *.html Dateien auslesen und verarbeiten :(
 
Solange es geht ist das doch egal...besser als es i zu nennen ;)

Delphi-Freak 16. Jul 2005 21:26

Re: [PHP][Gelöst] *.html Dateien auslesen und verarbeiten :(
 
Ich bin nie zufrieden zu stellen :zwinker:
Mein Vorschlag (durch die RegExp wird der Teil sowieso schon herausgesucht):
Code:
<?php

//öffnen des ordners
$handle=opendir("news/");

$daten = array();

//auslesen der dateien
while ($file = readdir($handle)) {
   if(preg_match("/([0-9]{4})\-([0-9]{2})\-([0-9]{2})\.html/", $file, $treffer)) {
      //timestamp erzeugen
      $daten[] = mktime(0,0,0,$treffer[2],$treffer[3],$treffer[1]);
   }


closedir($handle);

//sortieren
rsort($daten);
reset($daten);

//ausgeben
for($i=0; $i<$count($daten); $i++) { 
   echo "<a href=\"news/".date('Y-m-d',$daten[$i]).".html\">News vom ".date('d',$daten[$i]).". ".date('m',$daten[$i]).".</a>";


?>
Am besten lässt man das $gesam(m)t überhaupt weg, wenn's nur einmal verwendet wird. Dann kann sich auch kein Airblader beschweren :wink:
Übrigens, am Schluss sollte der a-Tag auch geschlossen werden...

Liebe Grüße, und ich hoffe, dass du mir nicht allzu böse bist, wenn ich immer das letzte Wort haben will :zwinker: (Ich weiß, ich sollte den Spruch etwas beherzigen: »Wenn du bei einem Streit das letzte Wort haben willst, dann sag doch mal: >Ich glaube, du hast recht<!«),
Gerhard

Edit: Ich liebe das Kompakte; also wenn eine Variable definiert, aber nur einmal verwendet wird, dann schreibe ich den Wert lieber gleich unten hin :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz