Dos2unix sur répertoire et sous répertoire

Description

Au fil des missions que j'ai effectuées, je me suis rendu compte que beaucoup de développeurs ne portaient pas une grande attention aux encodages des sources, que ce soit au niveau des breaklines ou des charset. Il est d'usage d'avoir des fichiers source configurés avec la paire UNIX/UTF-8, ce qui évite pas mal de soucis...
Comme tout le monde n'a pas accès à une console unix, notamment sur des serveurs partagés, voici une petite classe PHP qui permet de convertir un répertoire avec ses sous répertoires.
Configuration et utilisation :
- placer le fichier à la racine du répertoire à traiter
- définir la liste des extensions de fichiers à traiter ($this->ext)
- lancer le script

L'autre solution est d'utiliser Eclipse qui fait ça très bien... ;)
Dans ce cas là, le workspace peut être configuré comme il se doit, ce qui reste encore la meilleure solution.

Source / Exemple :


<?php
class convertCRLF {

	public function __construct() {

		$this->countfiles = 0;
		$this->count = 0;
		$this->ext = array (
			'php',
			'xml',
			'ini',
			'html',
			'js',
			'css',
			'txt'
		);
		$this->returnlist = array ();

	}

	private function trim_CR_ContentFile($file) {
		$datas = str_replace("\r", '', file_get_contents($file));
		$fp = fopen($file, "wb+");
		fwrite($fp, $datas);
		fclose($fp);
	}

	private function getExtension($string) {
		$getExtension = explode(".", $string);
		return $getExtension[sizeof(explode(".", $string)) - 1];
	}

	public function viewtree($path = ".") {
		$files = glob($path . '/*');
		foreach ($files as $value) {
			if (is_dir($value)) {
				self :: viewtree($value);
			} else {
				if (in_array(strtolower(self :: getExtension($value)), $this->ext)) {
					$this->count++;
					$buffer = file_get_contents($value);
					if (preg_match('['.chr(13).']', $buffer)) {
						$this->returnlist[] = $value;
						$this->countfiles++;
						self :: trim_CR_ContentFile($value);
					}
				}
			}
		}
	}

	public function __toString() {
		$return = 	$this->count .
					' fichiers de type ' . implode(', ', $this->ext) .
					'<br />' .
					($this->countfiles != 0 ? $this->countfiles . ' trouvé' .
					($this->countfiles > 1 ? 's' : false) .
					'.' : 'Aucun CRLF trouvé.');
		foreach ($this->returnlist as $value) {
			$return .= '<br />' . $value . ' converti';
		}
		return $return;
	}
}

$getfiles = new convertCRLF();
$getfiles->viewtree();
echo $getfiles;
?>

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.