Hello Julian,
[...] ob es eine Schleife gibt, die den letzten Punkt in einer per PHP ausgelesenen Datei entfernen oder ausblenden kann...
Jetzt bitte mal Butter bei die Fische und ganz exakt antworten:
Möchtest Du IN einer Datei etwas ändern?
Oder möchtest Du den Namen der Datei, bzw. den angezeigten Namen ändern, so wie das oben schon angedeutet wurde?
Ich nehme jetzt mal an, dass Du den angezeigten Namen ändern willst, also die Extension, weglassen willst. Da sind gestern einige Fragen und Tipps offen geblieben.
1. Trenne Datenbeschaffung, Datenverarbeitung, Datenspeicherung und Anzeige sauber voneinander.
Das hat den Vorteil, dass man wiederbenutzbare Funktionen aus den einzelen Aufgaben machen
kann und außerdem eine bessere Struktur in seine Skripte bekommt. Das erhöht die Übersicht-
lichkeit und verbessert die Wartbarkeit.
2. Wenn Du Funktionen benutzt, schaue immer ins Handbuch auf http://php.net, wie diese
funktionieren und lies Dir die Beispiele durch. Und besonders zuu empfehlen sind auch die
UCN = User Contributed Notes = Bemerkungen und Beispiele der Benutzer
Zur Vorgehensweise:
Daten beschaffen. Du brauchst die Dateinamen, dad geht bequem mit der Funktion glob()
http://de2.php.net/manual/en/function.glob.php
Du erhältst dann ein Array, das Du anschließend nur durchzuarbeiten brauchst.
$path = '/home/meine_dateien/'; ## abschließenden Slash beachten!
$pattern = '*.*' ## Alle Dateien mit einer Endung
$pattern = '*'; ## Alle Dateien
$pattern = '*.jpg'; ## Alle Dateien mit der kleingeschriebenen Endung jpg
$_dir = glob($path.$pattern);
Wenn Du nur Dateien haben willst, schmeißt Du alle Elemente aus dem Array raus, die KEINE Files kennzeichnen. Das geht mit einer foreach()-Schleife, der Funktion is_file() und der Funktion unset()
if (is_array($_dir))
{
foreach ($_dir as $key => $path)
{
if (!is_file($path))
{
unset ($_dir[$key]);
}
}
}
Wenn Du nun nur die Dateinamen haben möchtest OHNE Endungen, dann musst Du Dir erst einmal die qualifizierten Pfade+Namen ansehen, ob sie überhaupt eine Extension haben. Es muss also mindestens ein Punkt enthalten sein im basename() aus dem Namensstring. Dann kannst Du entweder die Funktion explode('.', $name, -1) benutzen und anschließend die Teile wieder mit implode zusammensetzen, oder Du benutzt die für Pfade gedachte Funktion pathinfo()
http://de2.php.net/manual/en/function.pathinfo.php,
Die Dir ja schon genannt wurde von Felix https://forum.selfhtml.org/?t=194374&m=1299595
$_result = array(); ## Neues Array für das Ergebnis bereitstellen
if (is_array($_dir))
{
foreach($_dir as $key => $path)
{
$_result[] = pathinfo($path, PATHINFO_FILENAME);
}
}
Wenn Du pathinfo() benutzt musst Du entweder mit dem Argument Options arbeiten. Du gibst dann EINE der Möglichkeiten an (PATHINFO_DIRNAME, PATHINFO_BASENAME, PATHINFO_EXTENSION, PATHINFO_FILENAME) und erhältst dann das entsprechende Element als String zurück, oder Du musst vorher mit isset() prüfen, ob das Element überhaupt im Array zurückgegeben wurde, und dann auf das Array-Element zugreifen.
Am Ende solltest Du ein Array übrig behalten, dass die Informationen in dre gewünschten Form enthält und dann nur noch an Deine Ausgabefunktion übergeben werden muss.
echo "<pre>\r\n";
echo htmlspecialchars(print_r($_result,1));
echo "</pre>\r\n";
Aus den oben aufgezeigten Sequenzen solltest Du, wenn sie geprüft sind, kleine Funktionen bauen, die immer entweder false oder das gewünschte Ergebnis (hier meistens als Array() zurükgeben. Übergibt man einer solchen Teilfunktion anstelle des erwartetn Typs, sollte diese gelich mit
return false;
abbrechen.
Beispiel, alle Elemente aus dem Array löschen, die KEINE Files sind und
Links und relative Pfadangaben umwandeln in reale qualifizierte Pfade:
#------------------------------------------------
function only_real_files($_dir)
{
if (!is_array($_dir)) return false;
foreach ($_dir as $key => $path)
{
if (!is_file($path))
{
unset ($_dir[$key]); ## Elemente rausschmeißen, die keine Files
} ## oder Links darauf kennzeichnen
else
{
$_dir[$key] = realpath($path); ## Links und relative Pfade auflösen zu
## qualifizierten (echten) Pfaden
}
}
return $_dir;
}
#------------------------------------------------
Wenn Du mit allen anderen Programmsequenzen auch so verfährst, entsteht daraus nachher eine brauchbare Funktionssammlung, die Du immer wieder benutzen kannst.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg