SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 21.03.2005, 09:05:59
rkersting rkersting ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 11
Inhalt einer Datei ab einem Fixpunkt einlesen

Hallo,
ich habe ein Problem.
Ich möchte aus unterschiedlichen Textdateien, die von Usern per Dateiupload in ein Verzeichnis gelegt werden, einen Ausschnitt des Inhalts per PHP in einer Datei ausgeben.

Die txt-Dateien haben grundsätzlich unterschiedlichste Strukturen, so dass ein einlesen erst ab der 5 bis 10. Zeile Sinn macht. Dann soll eine Ausschnitt herausgezogen werden, z.B. 20 Zeilen.

Die Probleme sind:
1) die Datei hat unter Umständen gar keine 5 Zeilen - wie vermeide ich dann für die Startsequnz eine Fehlermeldung und springe zur nächsten Datei?

2) Wenn die Datei 5 Zeilen Einführung hat, aber der Inhalt keine 20 Zeilen lang ist, wie vermeide ich dann die Fehlermeldung und lese einfach weniger Zeilen, oder, wenn unlösbar, wie springe ich dann zur nächsten Datei?

Sie Basis ist denke ich mit bekannten Lösungen, wei Zufallszitaten, denkbar, da die ausgewählte datei auch immer zufällig ausgewählt werden soll, also keine Reihenfolge bestehen soll.

<?php
srand ((double) microtime() * 1000000);
$zitate = file("daten/quote.dat");
$i = count($zitate)-1;
print $zitate[rand(0,$i)];
?>

Nur wird hier natürlich nur aus einer datei etwas zufällig eingelesen und es spielt keine Rolle, wie lang es ist ...

Kann mir jemand einen Tipp geben? Bitte ...

Vielen Dank!
Mit Zitat antworten
  #2  
Alt 21.03.2005, 09:20:31
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

Zitat:
Zitat von rkersting
Die Probleme sind:
1) die Datei hat unter Umständen gar keine 5 Zeilen - wie vermeide ich dann für die Startsequnz eine Fehlermeldung und springe zur nächsten Datei?
Du kannst die Datei mit der Funktion [func]file()[/func] zeilwenweise in ein Array lesen, so dass du anschließend mit [func]count()[/func]/[func]sizeof()[/func] die Anzahl der Zeilen ermitteln kannst.

Zitat:
Zitat von rkersting
2) Wenn die Datei 5 Zeilen Einführung hat, aber der Inhalt keine 20 Zeilen lang ist, wie vermeide ich dann die Fehlermeldung und lese einfach weniger Zeilen, oder, wenn unlösbar, wie springe ich dann zur nächsten Datei?
Da du die Datei vorher mit [func]file()[/func] in ein Array gepackt hast, kannst du jetzt mit [func]array_slice()[/func] einen bestimmten Teil aus diesem Array extrahieren.

Ein Beispiel:
PHP-Code:
<?php
    $content 
file('file.txt');
    if(
count($content) >= 5) {
        
$extract array_slice($content25);
    }
?>
In dem Array $extract stehen jetzt die Zeilen 3 - 7 der Datei file.txt. Wenn die Datei nur 5 Zeilen hätte, würden dementsprechend nur die Zeilen 3 - 5 in $extract vorhanden sein.

Geändert von xabbuh (21.03.2005 um 09:20:51 Uhr)
Mit Zitat antworten
  #3  
Alt 21.03.2005, 10:45:02
rkersting rkersting ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 11
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

Hallo,
vielen Dank für die schnelle Hilfe ...

aber ich habe es mal so umgesetzt:

<?php
$content = file('data.txt');
if(count($content) >= 5) {
$extract = array_slice($content, 2, 5);
}
echo $extract;
?>

und bekomme als Ausgabe nur: Array

wo liegt das Problem?

Wobei data.txt eine normale txt-Datei mit z.B. einem Tagebucheintrag von ca. einer DIN A4 Seite ist, mit Leerzeilen, Zeilenumbrüchen, Soderzeichen wie z.B. "" etc., also eben eine ganz normale Textdatei.
Mit Zitat antworten
  #4  
Alt 21.03.2005, 11:02:29
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

array_slice liefert als rückgabe wert ein array, keine variable.

du musst also noch ein implode() einbauen, das dir die array elemente zu einem string zusammen setzt. so etwa:

PHP-Code:
<?php
$content 
file('data.txt');

if(
count($content) >= 5){
    
$extract array_slice($content25);
}

$inhalt implode(''$extract);

echo 
$inhalte;
?>
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #5  
Alt 21.03.2005, 11:13:38
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

Der Rückgabewert von [func]array_slice()[/func] ist ein Array. Wenn du dir dieses anzeigen lassen willst, musst du entweder die Funktionen [func]print_r()[/func] oder [func]var_dump()[/func] benutzen.
Mit Zitat antworten
  #6  
Alt 21.03.2005, 11:33:23
rkersting rkersting ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 11
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

Jaaa - so sieht das gut aus ;-)

Vielen Dank!
Mit Zitat antworten
  #7  
Alt 21.03.2005, 11:35:30
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

welche variante hascht du denn jetzt genommen?
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
  #8  
Alt 21.03.2005, 12:23:19
rkersting rkersting ist offline
Anfänger
 
Registriert seit: Oct 2004
Beiträge: 11
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

da ich lieber mit echo als mit print arbeite (die Grundsätzlichen Vor- und nachteile sind mir allerdings nicht bekannt, bzw. haben sich mir noch nicht erschlossen ...) habe ich folgendes gebaut:

<?php
$content = file('data.txt');
if(count($content) >= 30) {
$extract = array_slice($content, 10, 20);
}
$inhalt = implode('', $extract);

echo "<p> <b>Auszug aus dem Beitrag:</b> ... ".$inhalt." ... <b>Ende des Auszugs</b></p>";
?>

.. das klappt ganz prima ...

allerdings, jetzt wo ich dabei bin ... es gibt ja noch ein Problem:

- in dem Verzeichnis liegen jede Menge Dateien mit unterschiedlichsten Namen, aber alle .txt.

Nun soll ja bei jedem Aufruf eine zufällig ausgewählte Datei auszugsweise angezeigt werden.

Ich dachte hier etwas aus dem Zufallszitate herauszubasteln, aber gibt es eine elegante Lösung dafür (ohne die von mir regelmässig erzeugten unmengen Code für Variablen etc. ...

Das wäre noch mal super, wenn mir einer da auch noch helfen würde.

Vielen Dank.
Mit Zitat antworten
  #9  
Alt 21.03.2005, 13:10:18
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

Lies das Verzeichnis, in dem die Dateien liegen, in ein Array ein und wähle per Zufall eines der Elemente aus dem Array aus.
Mit Zitat antworten
  #10  
Alt 21.03.2005, 13:24:29
Benutzerbild von |Coding
|Coding |Coding ist offline
Administrator
 
Registriert seit: Apr 2002
Ort: Bergheim
Alter: 41
Beiträge: 5.255
|Coding eine Nachricht über Skype™ schicken
AW: Inhalt einer Datei ab einem Fixpunkt einlesen

nun ja, print ist gegenüber echo eine richtige funktion. print kann immer verwendet werden, echo aber nicht z.b. dann, wenn ein rückgabewert erwartet wird, wie beim trinären bindungsoperator:

PHP-Code:
<?php
$a 
1;
$b '1';
$a === $b ? print '$a und $b sind identisch.' : print '$a und $b sind ungleich.';
?>
ausgabe: $a und $b sind ungleich.
(anderer datentype: $a integer, $b string)

PHP-Code:
<?php
$a 
1;
$b '1';
$a === $b ? echo '$a und $b sind identisch.' : echo '$a und $b sind ungleich.';
?>
hier kriegst du nen parse error: "parse error: parse error, unexpected T_ECHO..."
der grund: echo ist ein sprachkonstrukt und liefert keine rückgabe.

abgesehen davon, dass print eine funktion und echo ein sprachkonstrukt ist und das print einen rückgabewert liefert, gibt es keine weiteren unterschiede. da die ausgabe eh immer der schnellste teile eines scripts ist, ist es am ende dein bier, ob du echo oder print nutzt.
__________________
Gruß |Coding

---
Qozido® - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler in Script das Inhalt einer .txt Datei (HTML Sourcecode) in Datei schreiben sol RookieXL2 PHP für Fortgeschrittene und Experten 2 09.06.2007 00:58:33
Datei einlesen und weiterverarbeiten LudwigB PHP Grundlagen 3 18.06.2004 20:02:12
Datei einlesen und parsen? Schnoop PHP für Fortgeschrittene und Experten 5 29.04.2003 19:57:49
HTML Code aus Datei einlesen Psycho PHP für Fortgeschrittene und Experten 4 12.03.2003 01:50:10
filesize() löscht den inhalt einer datei?? Matt PHP Grundlagen 1 02.06.2002 11:37:12


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:00:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt