php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.10.2005, 11:23  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard dateien ausgeben kein Problem - ABER!

Hallo erstmal!
hab hier mal ein kleines Script welche einen Inhalt in einem Ordner aufliestet.

mit Dateinamen und der jeweiligen grösse dieser Datei.(funktioniert auch)

Das script:
PHP-Code:
<? 
function getFiles($path)

  
$files = array(); 
  
$fileNames = array(); 
  
$i 0

  if (
is_dir($path))
  { 
  print 
"Folgende Dateien befinden sich im Ordner: [b]$path[/b]
"
;
    if (
$dh opendir($path))
    { 
       while ((
$file readdir($dh)) !== false)
       { 
          if (
$file == "." || $file == "..")
             continue; 
          
          
$fullpath $path "/" $file
          
$fkey strtolower($file); 
          
          while (
array_key_exists($fkey,$fileNames))
             
$fkey .= " "
             
          
$a stat($fullpath); 
          
          
$files[$fkey]['size'] = $a['size']; 
          
          if (
$a['size'] == 0)
             
$files[$fkey]['sizetext'] = "-"
          else if (
$a['size'] > 1024)
             
$files[$fkey]['sizetext'] = (ceil($a['size']/1024*100)/100) . " Kbyte"
          else if (
$a['size'] > 1024*1024)
             
$files[$fkey]['sizetext'] = (ceil($a['size']/(1024*1024)*100)/100) . " Mbyte"
          else
             
$files[$fkey]['sizetext'] = $a['size'] . " bytes"
             
          
$files[$fkey]['name'] = $file
          
$files[$fkey]['type'] = filetype($fullpath); 
          
$fileNames[$i++] = $fkey
       } 
          foreach (
$files as $file){
          print 
"<table border=1>";
          print 
"<tr>";
          print 
"<td width=180>";
          print 
"<a href=$path/$file[name]>$file[name]</a>";
          print 
"<td width=80>";
          print 
"$file[sizetext]
\n"
;
          print 
"</tr>";
          print 
"</table>"
          }
       
       
closedir($dh); 
    }
    else
      die (
"Cannot open directory: $path"); 
  }
  else
    die (
"Path is not a directory: $path"); 
    
  
sort($fileNames,SORT_STRING); 
  
  
$sortedFiles = array(); 
  
$i 0
  
  foreach(
$fileNames as $f)
     
$sortedFiles[$i++] = $files[$f]; 

  return 
$sortedFiles


$files getFiles("upload"); 

?>
Das Problem ist jetzt aber, dass bei "$file[name]" halt Dateiname + Dateiendung angezeigt wird!

ok man könnte ganz einfach explode() benutzen, nur was macht man wen sich im ordner mal ne Datei mit einem punkt befindet? z.B. hallo.world.txt
(Dateiname = hallo.world Dateiendung= txt) wie könnte man das am besten lösen? kann man irgendwie sagen er soll den explode erst ab den letzten 4 Zeichen machen? ^o) was hättet ihr für Vorschläge? bin für alles offen =D

am besten wäre doch schon eine funktion ich habs mal mit:
PHP-Code:
<?php
function dateiname($file){
list(
$filename,$fileext) = explode(".",$file);
array_push ($file$filename);
array_push ($file$fileext);
}
?>
wobei:
1.Das nicht funktioniert, er "pusht" in den array einfach nur "Array" (behauptet var_dump())
2. Das behebt das Problem nicht das der Dateiname einen . beinhalten könnte.

ich hoffe ich habe mein Problem gut geschildert und mir kann hier geholfen werde, bin froh um jeden/jede Tipp/Hilfe.
dsmcg ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.10.2005, 11:28  
Gast
 
Beiträge: n/a
Standard

Und wieder mal verweisen wir auf die Doku: http://de3.php.net/manual/de/function.pathinfo.php

Gruß
phpfan
 
Alt 21.10.2005, 11:59  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

danke! genau das habe ich gebraucht
__________________
Wie man Fragen richtig stellt
dsmcg ist offline  
Alt 21.10.2005, 14:21  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

ist doch nicht ganz das was ich wollte, den ich will ja nur den Dateinamen auch haben

nochmal ein Beispiel

ganze Datei:

hallo.welt.txt

es soll ausgeben
hallo.welt

mit pathinfo() kann ich aber entweder den ganzen namen, das heisst "hallo.welt.txt" ausgeben oder halt nur ".txt"

das heisst ich müsste von $path_parts["basename"] ; $path_parts["extension"] enfernen, aber wie? ... ich komm mit dem php manual nicht zu recht.. sry
dsmcg ist offline  
Alt 22.10.2005, 10:16  
Benutzer
 
Registriert seit: 23.08.2004
Beiträge: 35
Ente
Standard

Zitat:
ist doch nicht ganz das was ich wollte, den ich will ja nur den Dateinamen auch haben

nochmal ein Beispiel

ganze Datei:

hallo.welt.txt

es soll ausgeben
hallo.welt

mit pathinfo() kann ich aber entweder den ganzen namen, das heisst "hallo.welt.txt" ausgeben oder halt nur ".txt"

das heisst ich müsste von $path_parts["basename"] ; $path_parts["extension"] enfernen, aber wie? ... ich komm mit dem php manual nicht zu recht.. sry
Also du willst von $path_parts["basename"] ; $path_parts["extension"] entfernen , oder?
Dann probier das
$datei=eregi_replace($path_parts["extension"],"",$path_parts["basename"]);

So hast zwar nur den Dateinamen in der Variable $datei , aber wenn du eine Datei hello.txt.txt hast , wird nur hello angezeigt.
Momentan fällt mir sonst nichts ein


Gruß Ente
Ente ist offline  
Alt 22.10.2005, 11:16  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

probier einfach mal substr()

PHP-Code:
<?php
// z.b.: $file = hallo.welt.txt
$filename substr($file0, -4);
print 
$filename
// sollte "hallo.welt" ausgeben 
?>
mfg Andi
DER_Brain ist offline  
Alt 22.10.2005, 11:44  
Gast
 
Beiträge: n/a
Standard

Ich nehm alles zurück wusste nicht das man auch -4 angeben kann
 
Alt 22.10.2005, 14:07  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von DER_Brain
probier einfach mal substr()

PHP-Code:
<?php
// z.b.: $file = hallo.welt.txt
$filename substr($file0, -4);
print 
$filename
// sollte "hallo.welt" ausgeben 
?>
mfg Andi
Viel Spaß mit einer Datei, die den Namen hallo.welt.html hat.

Der Weg über pathinfo ist doch sicherer, da kann man die String-Länge von $path_parts["extension"] startt der -4 nehmen.

Gruß
phpfan
 
Alt 22.10.2005, 14:52  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ok an das hab ich nicht gedacht..

meine variante is wohl nur dann sinnvoll, wenn man weiß, welche dateien upgeloaded werden.

...

mfg Andi
DER_Brain ist offline  
Alt 22.10.2005, 19:59  
Erfahrener Benutzer
 
Benutzerbild von dsmcg
 
Registriert seit: 11.10.2005
Beiträge: 2.405
dsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäredsmcg sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von phpfan

Der Weg über pathinfo ist doch sicherer, da kann man die String-Länge von $path_parts["extension"] startt der -4 nehmen.

Gruß
phpfan
wie würde den da der Befehl aussehen???
dsmcg ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Galerie Problem... coraplanet PHP Tipps 2008 4 06.06.2008 13:42
datensätze defekt oder problem mit dem einlesen? Ministry Datenbanken 4 06.07.2006 18:42
Mysql Problem Datensätze ausgeben enes23 Datenbanken 1 24.06.2006 19:55
sessions problem 022.9 PHP Tipps 2006 5 19.06.2006 18:13
Problem mit Dateien... Freeaak PHP Tipps 2006 6 19.06.2006 15:02
Leerzeichen ersetzen Problem bei dateien mokus PHP Tipps 2006 20 24.05.2006 19:51
Problem beim Kopieren von Dateien Smiley PHP Tipps 2006 5 04.02.2006 00:11
Mehrere Dateien uploaden (foreach Problem) pixelcut PHP-Fortgeschrittene 3 09.11.2005 17:34
[Erledigt] Problem mit cp und &amp;amp;quot;Argument list too long&amp;amp;quot; Server, Hosting und Workstations 9 11.10.2005 22:17
Problem mit PHP-Gästebuch - Neuste Einträge zuerst ausgeben? nicobischof PHP Tipps 2005-2 1 01.10.2005 23:17
[Erledigt] Problem beim schreiben von großen Dateien PHP-Fortgeschrittene 21 18.07.2005 15:11
Problem mit *.TPL dateien und Design imported_DJ Nuno HTML, Usability und Barrierefreiheit 4 08.03.2005 02:29
Problem bei Dateiupload bei großen Dateien Calli PHP Tipps 2005 4 13.01.2005 16:13
Problem: css mit php auslesen und stylenamen ausgeben PHP-Fortgeschrittene 5 09.01.2005 11:12
Problem beim Upload mehrerer Dateien per Script PHP Tipps 2004 1 04.08.2004 16:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
stat filename ausgeben, name und size eine datei in php ausgeben, php path_parts extension ordner, upload datei url pfad ausgeben, print \hallo welt\ problem, pathinfo ausgeben, dateinamen ausgeben in txt

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.