Phpcode indenter

Description

avec cette classe vous pouvez mettre en forme(indenter) n'importe quel script php, pour que ça soit lisible :)
pour l'utiliser c'est très simple :)
pour utiliser cette classe :
<?php
require 'indenter.class.php';
$test=new indenter;
$test->indent('','mon_fichier.php');
?>
apres avoir créé une instance de la classe "indenter" vous appelez la méthodes "indent()" qui accepte deux paramètres la directoire et le nom du fichier à indenter

merci

Source / Exemple :


<?php
/**

  • @author: AMEZGHAL abdelilah <amezghal@msn.com>
  • /
class Indenter { public function __construct(){ } private $is_string1 = false; private $is_string2 = false; private $is_comment1 = false; private $is_comment2 = false; public function valid(){ return ( $this->is_string1 == false && $this->is_string2 == false && $this->is_comment1 == false && $this->is_comment2 == false ); } public function indent($dir, $file){ $string=trim(file_get_contents($dir.$file)); if(substr($string,0,5)=='<?php'){ $string=substr($string,5,strlen($string)-7); }else{ $string=substr($string,2,strlen($string)-4); } $out = "<?php\n"; $arc = 0; $semilicon = false; $space = true; $tab=''; $is_condition = false; $update=true; for($i = 0; $i < strlen( $string ); $i++) { $char = substr($string, $i, 1); switch($char) { case '"': if($this->is_comment1 == false && $this->is_comment2 == false) { if($this->is_string1) { if(substr($string,$i-1,1)!='\\') { $this->is_string1=false; } }else{ if($this->is_string2==false){ $this->is_string1=true; } } } $out .= $char; break; case '\'': if($this->is_comment1 == false && $this->is_comment2 == false) { if($this->is_string2) { if(substr($string,$i-1,1)!='\\'){ $this->is_string2=false; } }else{ if($this->is_string1==false){ $this->is_string2=true; } } } $out .= $char; break; case '/': if($this->is_string1 == false && $this->is_string2 == false) { if(substr($string, $i-1, 1)=='/'){ $this->is_comment1=true; $semilicon=false; } if($this->is_comment2){ if(substr($string, $i-1, 1)=='*'){ $this->is_comment2=false; $out .= $char."\n".$tab; $update=false; } } } if($update) { $out .= $char; }else{ $update = true; } break; case '*': if($this->valid()) { if(substr($string,$i-1,1)=='/'){ $this->is_comment2=true; $out = substr($out,0,strlen($out)-1); $out .=$tab.'/*'; } }else{ $out .= $char; } break; case '(': if($this->valid()) { $arc++; if($is_condition==false) { $is_condition=true; } } $out .= $char; break; case ')': if($this->valid()) { $arc--; if($arc==0){ $is_condition=false; } } $out .= $char; break; case ';': if($this->valid()) { if($is_condition){ $out .= $char.' '; $space = false; }else{ $semilicon = true; $out .= $char; } }else{ $out .= $char; } break; case '{': if($this->valid()) { $out .= "\n" . $tab . $char . "\n"; $tab .= "\t"; $out .= $tab; }else{ $out .= $char; } break; case '}': if($this->valid()) { $tab = substr($tab, 0, strlen($tab)-1); $out .="\n".$tab.$char."\n"; }else{ $out .= $char; } break; case ':': if($this->valid()) { $out .= $char."\n".$tab; } break; case "\n": if($this->is_comment1){ $out .= $char.$tab;; $this->is_comment1=false; }elseif($this->is_comment2){ $out .= $char.$tab; } break; case "\r": case "\t": if($this->is_string1==true || $this->is_string2==true) { $out .= $char; } break; case ' ': if($this->valid()) { if($space) { $out .= $char; $space = false; } }else{ $out .= $char; } break; default: $space=true; if($semilicon) { $out .= "\n".$tab.$char; $semilicon = false; } else { $out .= $char; } } } $out."\n?>"; file_put_contents($dir.'back_'.$file, $out); } } ?>

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.