Hallo, ich hab eine Problem mit Sonderzeichen in Dateinamen beim benutzen des copy Befehls. Hab keine Infos dazu gefunden bzw scheint das mit den Umlauten einfach nicht zu funktionieren. Deswegen wollte ich hier nochmal nachfragen ob dem wirklich so ist. Ich habe ein paar Mp3-Files welche im Titel manchmal Sonderzeichen wie zb "ѓ" haben. Ich möchte die Mp3 nun via PHP verschieben, was bei allen Files ohne Sonderzeichen auch funktioniert. Ich kann mir nun nicht vorstellen das das mit PHP nicht funktionieren soll da die Zeichen ja im Windows-Explorer auch korrekt dargestellt werden.
Hier mal mein Code:
Die move.php in welcher sich die Funktion zum verschieben befindet sieht folgendermaßen aus:
An dem vielen auskommentierten sieht man das ich schon verschiedenes probiert hab. Hoffe jmd kann mir dazu nen Tipp geben.
gruß ehorn
Hier mal mein Code:
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="css/pos.css" rel="stylesheet" media="screen" />
</head>
<body>
<?php
header("content-type: text/html; charset=UTF-8");
include("move.php");
include("move_folder.php");
include("del_files.php");
include("del_folder.php");
$directory = '../dl';
$zielverzeichnis = '..\\mp3';
$file = array();
$folder = array();
$source = array();
$z=0;
$it = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory));
$it->rewind();
while($it->valid()) {
if (!$it->isDot()) {
// echo 'SubPathName: ' . $it->getSubPathName() . "<br>";
// echo 'SubPath: ' . $it->getSubPath() . "<br>";
// echo 'Key: ' . $it->key() . "<br><br>";
$folder[] = $it->getSubPath();
$file[] = $it->key();
}
$it->next();
}
if(count($file) > 0)
{
echo "Im Verzeichnis '$directory' wurden ".count($file)." Dateien in ".count(array_unique($folder))." Ordnern gefunden...<br><br>";
while($z<count($file))
{
//echo $file[$z]."<br>";
//$zziel = str_replace("\\", "/", $file[$z]);
//setlocale(LC_CTYPE, 'cs_CZ');
$file[$z] = htmlentities($file[$z], ENT_QUOTES, "Windows-1252");
//$file[$z] = iconv("UTF-8", "ASCII//TRANSLIT", $file[$z]);
$file[$z] = html_entity_decode($file[$z], ENT_QUOTES , "utf-8");
$ziel1 = explode("\\", $file[$z]);
$ziel = "..\\dl\\".$ziel1[1]."\\".end($ziel1);
$source[] = "..\\dl\\".$ziel1[1];
//$ziel = str_replace("\\", "/", $ziel);
//echo "Zielverzeichnis-->$ziel<br>";
///////////////********************* Alle Datein aus Unterordner holen
echo "Dateiname: ".$file[$z]."<br>";
if(move($file[$z], $ziel))
{
echo "Datei ".$file[$z]." erfolgreich nach '$ziel' verschoben<br>";
}
else
{
echo "Keine Dateien zum verschieben! Alle Dateien liegen im Verzeichnis '$source[$z]'<br>";
}
}
}
Die move.php in welcher sich die Funktion zum verschieben befindet sieht folgendermaßen aus:
PHP-Code:
<?php
function move($from, $to){
//file_exists() - Existenz der Datei prüfen
if(!file_exists($to)){
//copy() - Datei kopieren
if (!copy($from, $to)) {
print ("Datei $from konnte nicht kopiert werden...(Sonderzeichen??)<br>\n");
$error=1;
//echo "Datei ".$from." erfolgreich nach '$to' verschoben<br>";
return false;
}
else{
//unlink() - Datei löschen
unlink($from);
return true;
}
}
}
?>
gruß ehorn
Kommentar