1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Dateien umbenennen mit lateinischen Zeichen

Dieses Thema im Forum "PHP" wurde erstellt von Thomas_Jung, 25. September 2016.

  1. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Hallo,
    ich versuche die Datei "19. Vianney - Je te dséteste.mp3" umzubenennen un erhalte folgende Meldung.


    Warning: : Das System kann die angegebene Datei nicht finden. (code: 2) in C:\xampp\htdocs\MP3_PLAYER_2016\rename.php on line 23

    Warning: : failed to open dir: No such file or directory in C:\xampp\htdocs\MP3_PLAYER_2016\rename.php on line 23
    Directory not found


    Wenn ich das é manuell entferne ist der Fehler weg.

    Was muss ich tun um mit PHP lateinischen Zeichen lesen zu können?

    Gruß Thomas




    PHP:
    1. function normalize($string) {
    2.     $inchar = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
    3.     $outchar = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
    4.     $newstring = str_replace($inchar, $outchar, $string);
    5.     return $newstring;
    6. }
    7. function do_rename($path){
    8.     if($handle = opendir($path))
    9.     {
    10.         while(($entry = readdir($handle)) !== FALSE)
    11.         {
    12.             if ($entry != "." && $entry != "..") {
    13.                 if(is_file($path.$entry))
    14.                 {
    15.                     //rename($path.$entry,$path.str_replace(' ', '_',$entry));
    16.                     echo "BEFORE:<br />";
    17.                     echo $path.normalize($entry);
    18.                     //rename($path.$entry,$path.normalize($entry));
    19.                     echo "<br />AFTER:<br />";
    20.                     echo normalize($entry).'<br />';
    21.                 }else{ //is_dir()
    22.                     do_rename($path.$entry.DIRECTORY_SEPARATOR);
    23.                 }
    24.             }
    25.         }
    26.  
    27.         closedir($handle);
    28.     }
    29.     else
    30.     {
    31.         echo "Directory not found";
    32.         exit();
    33.     }
    34. }
    35.  
    36.  
    37. do_rename($start_dir.'/');
    38. echo "Script Completed Successfully";
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    Gegenfrage 1: Welches Encoding hat die Datei mit dem PHP-Quelltext?

    Btw., die Meisten der Zeichen im Array sind nicht lateinisch.
     
  3. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Hallo,
    hier ist das komplette Script.

    Code (Text):
    1. <!DOCTYPE HTML>
    2. <html>
    3.     <head>
    4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5.         <title>MP3 Importieren</title>
    6.        
    7.     </head>
    8.     <body style="padding:px;">
    9. <?php
    10.  
    11. $start_dir = 'media/MP3';
    12. ?>
    13. <?php
    14.  
    15. function normalize($string) {
    16.     $inchar = explode(",","ç,æ,œ,á,é,í,ó,ú,à,è,ì,ò,ù,ä,ë,ï,ö,ü,ÿ,â,ê,î,ô,û,å,e,i,ø,u");
    17.     $outchar = explode(",","c,ae,oe,a,e,i,o,u,a,e,i,o,u,a,e,i,o,u,y,a,e,i,o,u,a,e,i,o,u");
    18.     $newstring = str_replace($inchar, $outchar, $string);
    19.     return $newstring;
    20. }
    21. function do_rename($path){
    22.     if($handle = opendir($path))
    23.     {
    24.         while(($entry = readdir($handle)) !== FALSE)
    25.         {
    26.             if ($entry != "." && $entry != "..") {
    27.                 if(is_file($path.$entry))
    28.                 {
    29.                     rename($path.$entry,$path.str_replace(' ', '_',$entry));
    30.                     echo "BEFORE:<br />";
    31.                     echo $path.normalize($entry);
    32.                     rename($path.$entry,$path.normalize($entry));
    33.                     echo "<br />AFTER:<br />";
    34.                     echo normalize($entry).'<br />';
    35.                 }else{ //is_dir()
    36.                     do_rename($path.$entry.DIRECTORY_SEPARATOR);
    37.                 }
    38.             }
    39.         }
    40.  
    41.         closedir($handle);
    42.     }
    43.     else
    44.     {
    45.         echo "Directory not found";
    46.         exit();
    47.     }
    48. }
    49.  
    50.  
    51. do_rename($start_dir.'/');
    52. echo "Script Completed Successfully";
    53.  
    54.  
    55.  
    56. ?>
    57.  
    58. </body>
    59. </html>
     
  4. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Hi
    ich brauche eigendlich nur ein Script das mir alle Dateien unbenennt.

    (Alles was kein Buchstabe Zahl _ - . ist aus Dateinamen entfernen)

    Es gibt genug Scripte die das erledigen. ABER alle haben das Problen mit dem Lesen der Dateinamen wenn Sie
    Sonderzeichen oder andere Zeichen im Dateinamen haben.
     
  5. sheel

    sheel I love Asm Administrator

    Die Frage von oben ist damit aber leider nicht beantwortet.

    (Streng genommen sind das aber alles Buchstaben ... jaja, ich weiß schon was gemeint ist :D)

    Btw., was soll passieren wenn zwei Dateinamen zum gleichen Zielnamen führen?
     
  6. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Die eine Datei umbenennen in 001 002 003 u.s.w währe eine Lösung
     
  7. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Es soll einfach nur ein Script sein das recrusive alle Ordner und Dateinamen mit ungültigen Zeichen ( alles was nicht a-z 0-1 - _ .) Umbenent

    Wie schon gesagt alle scripts was ich kenne melden ein Fehler bei Datei oder Ordner Namen mit Sonderzeichen oder anderen Zeichen. (Weil der Dateiname beim umbenennen oder kopieren nicht gelesen werden kann.

    Das System kann die angegebene Datei nicht finden.
     
  8. sheel

    sheel I love Asm Administrator

    :rolleyes:
    Falls du dir nicht sicher bist, wie man das findet: Welcher Editor?
     
  9. Thomas_Jung

    Thomas_Jung Erfahrenes Mitglied

    Was hat das mit dem Editor zu tun. Ich suche ein PHP script das diese Aufgabe für mich erledigt
     
  10. sheel

    sheel I love Asm Administrator

    Wo stellst du den Zeichensatz der Codedatei sonst ein, wenn nicht im Editor?
    ...Bin damit vorerst hier fertig, werde kein viertes Mal fragen.
     
Die Seite wird geladen...