Verzeichnis auslesen und Link generieren - Php-Programmierung
Hallo zusammen,
ich habe ein kleines Problem, mit umlauten ä, ö und ü. Folgendes wurde realisiert.
Diese HTML & PHP Code, ließt ein Verzeichnis aus und erstellt aus den vorhanden Dateien einen brauchbaren Link:
Nun mein Problem, wenn sich im Ordner Dateien befinden mit ä,ö und ü, dann passen die Links nicht mehr und der Pfade wird nicht geöffnet. wenn keine umlaute vorhanden sind, dann funktioniert die Generierung Einwand frei. Wie kann ich die Problematik lösen mit umlauten?
Vielen Dank an alle Helfer ;)
ich habe ein kleines Problem, mit umlauten ä, ö und ü. Folgendes wurde realisiert.
Diese HTML & PHP Code, ließt ein Verzeichnis aus und erstellt aus den vorhanden Dateien einen brauchbaren Link:
<!DOCTYPE html>
<html>
<head>
<title>Titel</title>
<meta charset="ISO-8859-1">
<meta name="description" content="">
<meta name="author" content="">
<meta name="keywords" content="">
</head>
<body>
<ul>
<?php
// Ordnername
$ordner = "dienstplan"; //auch komplette Pfade möglich ($ordner = "download/files";)
// Ordner auslesen und Array in Variable speichern
$alledateien = scandir($ordner); // Sortierung A-Z
// Sortierung Z-A mit scandir($ordner, 1)
// Schleife um Array "$alledateien" aus scandir Funktion auszugeben
// Einzeldateien werden dabei in der Variabel $datei abgelegt
foreach ($alledateien as $datei) {
// Zusammentragen der Dateiinfo
$dateiinfo = pathinfo($ordner."/".$datei);
//Folgende Variablen stehen nach pathinfo zur Verfügung
// $dateiinfo['filename'] =Dateiname ohne Dateiendung *erst mit PHP 5.2
// $dateiinfo['dirname'] = Verzeichnisname
// $dateiinfo['extension'] = Dateityp -/endung
// $dateiinfo['basename'] = voller Dateiname mit Dateiendung
// Größe ermitteln zur Ausgabe
$size = ceil(filesize($ordner."/".$datei)/1024);
//1024 = kb | 1048576 = MB | 1073741824 = GB
// scandir liest alle Dateien im Ordner aus, zusätzlich noch "." , ".." als Ordner
// Nur echte Dateien anzeigen lassen und keine "Punkt" Ordner
// _notes ist eine Ergänzung für Dreamweaver Nutzer, denn DW legt zur besseren Synchronisation diese Datei in den Orndern ab
if ($datei != "." && $datei != ".." && $datei != "_notes") {
?>
<li><a href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>"><?php echo $dateiinfo['filename']; ?></a> (<?php echo $dateiinfo['extension']; ?> | <?php echo $size ; ?>kb)</li>
<?php
};
};
?>
</ul>
</body>
</html>
Nun mein Problem, wenn sich im Ordner Dateien befinden mit ä,ö und ü, dann passen die Links nicht mehr und der Pfade wird nicht geöffnet. wenn keine umlaute vorhanden sind, dann funktioniert die Generierung Einwand frei. Wie kann ich die Problematik lösen mit umlauten?
Vielen Dank an alle Helfer ;)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273091
Url: https://administrator.de/contentid/273091
Ausgedruckt am: 23.11.2024 um 18:11 Uhr
7 Kommentare
Neuester Kommentar
Na alle Variablen welche Sonderzeichen enthalten können mit der Funktion Kapseln so dass Sonderzeichen URL konform umgewandelt werden.
Hi Furystage,
da gibt es noch ein bis zwei Möglichkeiten.
Du könntest mit UTF8_encode (http://php.net/manual/de/function.utf8-encode.php) oder UTF8_decode (http://php.net/manual/de/function.utf8-decode.php) versuchen die Ausgabestrings richtig zu Codieren.
Ich werfe meistens einfach mal beide Funktionen in den Code und schau dann welche bessere Ausgaben provoziert ;)
(Die Codierung unserer Warenwirtschaftsdatenbank ist nämlich so ne Sache...)
Wenn selbst das nicht geht, probier mal IConv() (http://php.net/manual/de/book.iconv.php)
Liebe Grüße
Larmina
da gibt es noch ein bis zwei Möglichkeiten.
Du könntest mit UTF8_encode (http://php.net/manual/de/function.utf8-encode.php) oder UTF8_decode (http://php.net/manual/de/function.utf8-decode.php) versuchen die Ausgabestrings richtig zu Codieren.
Ich werfe meistens einfach mal beide Funktionen in den Code und schau dann welche bessere Ausgaben provoziert ;)
(Die Codierung unserer Warenwirtschaftsdatenbank ist nämlich so ne Sache...)
Wenn selbst das nicht geht, probier mal IConv() (http://php.net/manual/de/book.iconv.php)
Liebe Grüße
Larmina