Renommer des fichiers en arabe avec php

Petit nouveau ! | 4 Messages

15 nov. 2016, 21:30

Bonjour tout le monde,

J'ai une liste de fichiers pdf nommés de 1.pdf à 1000.pdf, et j'ai des fichiers html (1.html à 1000.html) qui contiennent les noms correspondant.
J'ai utilisé le code suivant pour extraire les titres:

Code : Tout sélectionner

//Extraction du texte à partir d'un fichier HTML et renommer un fichier dans un répertoire $num_fichier = 10; for ($j=1;$j<=$num_fichier;$j++){ $ligne=32; $titre=''; $fichier='../ressources/'.$j.'.html'; $fp=fopen($fichier,'r'); if ($fp){ for ($i=1;$i<=$ligne;$i++) { $Temporaire = fgets($fp); if (empty($Temporaire)){ break; }else { $Contenu = $Temporaire; } } } fclose($fp); $titre = $Contenu; //Test d'affichage du titre sur le navigateur //echo $titre; rename('../ressources/'.$j.'.pdf', '../ressources/'.$titre.'.pdf'); }


Le code fonctionne bien. Lorsque j'affiche les titres sur mon navigateur ils s'affiche en Arabe, mais lorsque je les utilisent pour renommer les fichiers pdf ils s'affiche sur Windows bizarrement.



L'encodage de mon serveur Apach : ISO-8859-1
Mon IDE est en UTF-8
J'ai utilisé les fonction mb_detect_encoding($titre) et iconv("UTF-8", "Windows-1256//IGNORE (ou TRANSLIT)", $titre)
Cependant, je soupçonne le output de mon serveur Apach que je n'arrive pas à changer en windows-1256 ou cp1256
car la fonction mb_internal_encoding() ne les prends pas comme paramètre (cf mb_list_encodings())
Y at-il qqn qui peut m'aider à résoudre ce problème avp?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

15 nov. 2016, 23:10

Et sur ton serveur Windows, la langue arabe est bien installée ?
De mémoire c'est dans le panneau de config > Langues

Car si le windows de ton serveur n'a pas le jeu de caractères Windows-1256, ça ne peut pas fonctionner et mb_list_encodings() renvoie ce qui est installé sur ton système à ma connaissance
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 4 Messages

16 nov. 2016, 00:41

Merci @rthur pour ta réponse.
J'ai la langue arabe installée sur mon Windows et j'arrive à mettre des noms de fichiers en arabe, manuellement. Sinon, ce que j'ai compris de la docs php est que la fonction mb_list_encodings() liste les encodage du serveur Apache peu importe l'OS où il est installé, qqn svp peut confirmer ?