Pour un projet d'édition de livre en ligne, j'ai besoin de compter les caractères d'un fichier uploader. Ces fichiers sont au format .doc (word) et .rtf
taille approximative du nombre de caractère: entre 150 000 et + de 600 000.
J'ai pensé à un simple copier coller du livre et de faire une fonction php qui compte les caractère, mais cette solution ne me plait pas beaucoup puisque cela peu générer des erreurs de manipulation qui fausserait le résultat.
Est-ce que quelqu'un pourrait m'indiquer la marche à suivre (s'il en existe une) ou me donner une piste.
Si tu cherches les stats sur un fichier *.doc, tu l'ouvres sous word, dans la barre de menu, tu clic sur outils>statistiques et toutes les infos relatives à ton fichier apparaîtront, nombre de caractères brut, espace compris, paragraphe, nombre de mots,etc
j'espère que c'est bien ce que tu cherchais
---------------
Libres sont ceux qui n'imposent pas aux autres les règles qu'ils suivent eux mêmes...
Plombard, ta soluce a le mérite de fonctionner, mais je suppose que Tomtom s'attend en publiant dans la cat' Programmation à pouvoir le faire de façon automatique !
Tu as des fonctions en php qui te retourne la taille d'une variable, mais si ton fichier est de taille importante, oubli ça. Moi je serais pour le fait d'ouvrir un flot de lecture sur ton fichier, et de le parcourir, caractères par caractères, avec une incrémentation à chaque itération.
rhoooooooo! le RTF du XML A ta décharge Sim, le RTF, c'est qunad même bien du texte bêtement balisé.
Il faudrait d'abord transformer le document en texte simple. Il existe des solutions payantes (http://www.google.fr/search?q=doc+txt+convert), mais il existe aussi un truc tout bête : le pilote d'imprimante générique texte seulement de Windows - en faisant une impression dans un fichier, évidemment. Puis compter les caractères, avec un bête wc -c(unixutils)
Set fso = Wscript.CreateObject("Scripting.FileSystemObject" )
Set args = Wscript.Arguments
Set Word = wScript.CreateObject("word.application" )
Word.Visible = False ' Inutile mais comme ça, on fixe les idées.
For i = 0 To args.Count -1
wscript.echo args(i) & vbTab & Counter(args(i))
Next
Function Counter(Filename)
set doc = Word.Documents.Open(filename, False, True, False)
Counter = doc.Characters.Count
doc.Close
End Function
Et voilà un tchot script à lancer avec le nom des fichiers en paramètres.
On enregistre ce code dans un fichier qui s'appelle tom_compte_les_chars_dans_word.vbs , et on lance la commande suivante :
Certaines solutions mérite de tirer le chapeau bas ! quels artistes !
Mon problème étant de faire un site web ou les utilisateur uploaderont leur fichier .rtf (on oubli le word qui est impossible a traiter). ensuite c'est le serveur web qui traite automatiquement le fichier rtf en comptant le nombre de caractère et retourne celui ci.
Le but étant de définir une tarification par rapport à un volume de caractères.
J'ai bien l'impression qu'une partie de la solution réside dans le fait de n'utiliser exclusivement des fichier .rtf mais maintenant je ne sais ou trouver les infos nécessaires au traitement de celui-ci en php.
Merci beaucoup pour toutes ces réponses, mon problème étant mal éxposé, vous avez été bien pertinent !
>>> Machine Windows
Eh, les gars, on parle de M.I.C.R.O.S.O.F.T W.I.N.W.O.R.D !!!!
Il semblerait que la commande exec() fonctionne aussi bien sous Windows que sous UNIX-like. (Bah alors boub ?) Par contre, je lis sur ce site http://fr.php.net/function.exec qu'un safe mode limite l'action de cette commande.