2010-09-29 6 views
0

j'ai beaucoup de vidéos dans mon serveur et j'utilise le code suivant pour obtenir la durée de la vidéo et il fonctionne très bien ..comment lire des fichiers avec des espaces et des caractères spéciaux dans leur nom?

 ob_start(); 
     passthru("ffmpeg -i ".$srcfile." 2>&1"); 
     $duration = ob_get_contents(); 
     ob_end_clean(); 

Mais je ne pouvais pas la durée pour les fichiers qui a un espace ou des caractères spéciaux comme ('#% etc ...

Je ne peux pas renommer les fichiers comme il est déjà stocké et les noms de ces fichiers sont également stockés dans db et il faudrait un péage pour tout changer dans un live site ..

Y a-t-il une méthode pour accéder/lire les fichiers avec des caractères spéciaux?

+1

Vous devez utiliser [ 'popen()'] (http://php.net/popen) au lieu de déblayage environ avec 'ob_start()'. – caf

Répondre

3

escapeshellarg

Soit dit en passant, vous devriez toujours utiliser cela pour tout argument shell, moins vous voulez faire de votre application ouverte à shell-attaques par injection, ce qui pourrait être très dangereux.

0

Citer le nom de fichier entre guillemets simples:

passthru("ffmpeg -i '".$srcfile."' 2>&1"); 
+2

Mauvaise idée. Que faire si $ srcfile contient un seul guillemet? – telent

Questions connexes