PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Leerzeilen entfernen



Overlord04
01-09-2005, 19:40
Hallo,

ich habe folgendes Problem:

ich lese eine Datei mit


$datei=file($filename);

ein. Wenn diese Datei aber Leerzeilen enthält, bekomme ich natürlich auch leere Elemente in dem Feld $datei, was ich aber nicht haben möchte.

Gibt es ne elegante Möglichkeit, ein Befehl, oder ein anderes insFeldEinleseVerfahren, dass dieses bewerkstelligt.

Das Feld in ein anderes Feld einlesen, aber nur die Elemente die einen Inhalt haben ist zwar ne Möglichkeit, aber umständlicher geht es wohl nicht mehr.

Danke schon mal im Voraus

P.S.: Dabei fällt mir ein, dass ein Kollege das Skript zu Testzwecken mal ausprobiert hat und nur Dateien einlesen kann, die im Ordner des Skriptes liegen, ansonsten bekommt er eine Fehlermeldung. Das ist mir absolut unverständlich, da es bei mir mit jeder Datei geht, egal, wo sie liegt.

Fehlermeldung ist folgende, wenn sich die Datei nicht im Skriptordner befindet (test123 ist die einzulesende Datei,importFile.php die Datei, die diese einliest):

*Warning*: file(test123) [function.file
<http://localhost/ScSp/import/function.file>]: failed to open stream: No
such file or directory in
*C:\Programme\xampp\htdocs\ScSp\import\importFile. php* on line *7*

Vielleicht könnt Ihr damit was anfangen, ich kann es leider nicht.

Gruss Overlord

Romanday
01-09-2005, 19:53
*Warning*: file(test123) [function.file
<http://localhost/ScSp/import/function.file>]: failed to open stream: No
such file or directory in
*C:\Programme\xampp\htdocs\ScSp\import\importFile. php* on line *7*

Vielleicht könnt Ihr damit was anfangen, ich kann es leider nicht.

Gruss Overlord

Um deine leeren Zeilen zu löschen laß eine Schleife über das
Array laufen, und schließe die leeren Zeilen aus.

Die obige Fehlermeldung ist eigentlich eindeutig.
Der Pfad zur deiner Datei ist nicht richtig.

undefined
02-09-2005, 14:30
array_map ist hier etwas Performanter ;)


function cleanup( $i )
{
if ( $i != "" )
return $i;
else
return false;
}
$newArray = array_unique( array_map( "cleanup", $Array ) );

Romanday
02-09-2005, 16:04
array_map ist hier etwas Performanter ;)


Stimmt.

Ich wollte ihm das so einfach wie möglich vermitteln.
(Er ist doch nicht so weit:D)

Overlord04
03-09-2005, 17:02
@undefinded: Danke für den Code. Werde es mal so versuchen.

Zu der Fehlermeldung: Ja, der Pfad ist anscheinend nicht richtig, aber wie kann das sein ??
Bei meinem Kollegen stimmt der nicht, aber ich habe keine Probleme.

Der Pfad wird ja automatisch gesetzt, da ich ja in meinem Formular einen FileDialog benutze.

<input name="dateipfad" type="file">
Muss dann doch einfach stimmen!?!?

@Romanday: Danke für Deine Rücksicht auf mein NochNichtSoWeitSein :)

Romanday
03-09-2005, 17:38
Der Pfad wird ja automatisch gesetzt, da ich ja in meinem Formular einen FileDialog benutze.


Befindet sich die Datei, welche Du lesen möchtest schon auf deinem
Server oder willst Du die Datei erst uploaden und dann lesen?

Overlord04
05-09-2005, 19:05
Befindet sich die Datei, welche Du lesen möchtest schon auf deinem
Server oder willst Du die Datei erst uploaden und dann lesen?

Nein, die befindet sich schon auf den Server. Ein Upload vorher findet nicht statt.

Zu dem Cleanup-Code, der die Leerzeilen entfernt:

So funktioniert der bei mir nicht. Habe immer noch die gleiche Anzahl von leeren Zeilen in meinem Feld als leere Elemente.
Habe auch mit "\n" statt "" probiert etc. - funktioniert aber alles nicht, woran liegt das ?

Jabbawork
15-09-2005, 14:25
Probleme mit dem includen
mit diesem script nicht mehr sofern die Pfadliste richtig eingerichtet ist

<?php
Function pfad_liste(){
// intern
$data[]=("");
$data[]=("Ordner1/");
$data[]=("Ordner1/Ordner1/");
$data[]=("Ordner1/Ordner2/");
$data[]=("Ordner1/Ordner3/");
$data[]=("Ordner1/Ordner4/");
// extern // für ausserhalb gelagerte Dateien
$data[]=("../Ordner7/Ordner8/");

return ($data);
}
Function pfad($datei){
$liste=pfad_liste();
if((isset($datei))&(isset($liste))){
for($i=0;$i<=(count($liste));$i++){
if(file_exists($liste[$i].$datei)){
$pfad=($liste[$i].$datei);
} }
if(isset($pfad)){
return ($pfad);
}
else{
echo("Die Datei '".$datei."' wurde nicht gefunden.");
} }
else{
echo("Der Dateimame wurde nicht angegeben.");
} }

//Beispiel für include
//include($pfad($dateiname));



// So nun zum Problem:
// funktioniert bei text und Html sowie php
// andere Formate bitte selber testen.


$datei=(file($pfad($dateiname)));
for($i=0;$i<=(count($datei));$i++){
if(strlen($datei[$i])>="1"){
echo($datei[$i]);
} }

?>

Solte es wiedererwarten nicht gehen.
vor dem zählen der Zeichen mit trim() die leerzeichen entfernen.
Natürlich kann mann auch nur gefüllte Zeilen wieder in ein weiteres Array lesen.
Viel Spass ;)


Ich Überneme keine Haftung für etweige scripte und mögliche Folgen. :D