Compteur de fonctions

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 432 fois - Téléchargée 31 fois

Contenu du snippet

Ce code permet de compter le nombre de fonctions-clé de PHP sont présentes dans un fichier (ou un répertoire avec possiblité de scanner ou non les sous-répertoire) défini.

Source / Exemple :


<?php
	

	$scan="test.php"; //répertoire à scanner
	$tabKeywords=array("abs","acos","acosh","addcslashes","addslashes","aggregate","array","array_change_key_case","array_chunk","array_combine","array_count_values","array_diff","array_diff_assoc","array_diff_key","array_diff_uassoc","array_diff_ukey","array_fill","array_filter","array_flip","array_intersect","array_intersect_assoc","array_intersect_key","array_intersect_uassoc","array_intersect_ukey","array_key_exists","array_keys","array_map","array_merge","array_merge_recursive","array_multisort","array_pad","array_pop","array_push","array_rand","array_reduce","array_reverse","array_search","array_shift","array_slice","array_splice","array_sum","array_udiff","array_udiif_assoc","array_udiff_uassoc","array_uintersect","array_uintersect_assoc","array_uintersect_uassoc","array_unique","array_unshift","array_values","array_walk","array_walk_recursive","arsort","asin","asinh","asort","closedir","echo","isset","is_array","is_dir","is_file","mysql_affected_rows","mysql_change_user","mysql_client_encoding","mysql_close","mysql_connect","mysql_create_db","mysql_data_seek","mysql_db_name","mysql_db_query","mysql_drop_db","mysql_errno","mysql_escape_string","mysql_fetch_array","mysql_fetch_assoc","mysql_fetch_field","mysql_fetch_lengths","mysql_fetch_object","mysql_fetch_row","mysql_field_flags","mysql_field_len","mysql_field_name","mysql_field_seek","mysql_field_table","mysql_field_type","mysql_free_result","mysql_get_client_info","mysql_get_host_info","mysql_get_proto_info","mysql_get_server_info","mysql_info","mysql_insert_id","mysql_list_dbs","mysql_list_fields","mysql_list_processes","mysql_list_tables","mysql_num_fields","mysql_num_rows","mysql_pconnect","mysql_ping","mysql_query","mysql_real_escape_string","mysql_result","mysql_select_db","mysql_stat","mysql_tablename","mysql_thread_id","mysql_unbuffered_query","opendir","readdir","split"); //tableau des fonctions-clés de PHP à rechercher
	$sousrep=1; //si 1, alors scanner aussi les sous-répertoires
	$tab=array();
	
	function compteur($homedir,$tabKeywords,$sous_rep)
	{
		if(is_dir($homedir))
		{
			$dir = opendir($homedir);
			while ($file = readdir($dir))
			{
				if($file != "." && $file !="..")
				{
					if (is_dir($homedir."/".$file) && $sous_rep == 1)
					{
						compteur($homedir."/".$file,1);
					}
					$tableau=azerty($file,$tabKeywords,&$tableau);
				}
			}
			closedir($dir);
			return ($tableau);
		}
		else
		{
			$tableau=azerty($homedir,$tabKeywords);
		}
		return ($tableau);
	}
	
	function azerty($file,$tabKeywords,$tab=array())
	{
		if(!$chaineTxt=file_get_contents($file))
		{
			echo "error";
		}
		$tabMots=split('[ (]',$chaineTxt);
		for($i=0;$i<count($tabMots);$i++)
		{
			for($j=0;$j<count($tabKeywords);$j++)
			{
				if(stristr($tabMots[$i],$tabKeywords[$j]))
				{
					if(isset($tab[$tabKeywords[$j]]))
					{
						
						$tab[$tabKeywords[$j]]++;
					}
					else
					{
						$tab[$tabKeywords[$j]]=1;
					}
				}
			}
		}
		return($tab);
	}

	$tab=compteur($scan,$tabKeywords,$sousrep);

	echo "Nombre de fonctions trouvées:<br>";
	echo count($tab);
		
	echo "<p>Affichage par ordre alphabétique:<br>";
	ksort($tab);
	echo "<pre>";
	print_r($tab);
	echo "</pre>";
	
	echo "<p>Affichage par ordre décroissant:<br>";
	arsort($tab);
	echo "<pre>";
	print_r($tab);
	echo "</pre>";

?>

Conclusion :


petite explication... la variable "$scan" désigne le fichier (ou le répertoire) à scanner
"$sousrep" indique s'il faut aussi scanner les sous-répertoires (par défaut, oui). Mettez à 0 pour ne pas les scanner
L'affichage des résultats se fait avec la fonction print_r, je sais ca donne pas un affichage super beau, masi c'est surtout pour monter le résultat (qui est affiché par ordre alphabétique et aussi par ordre décroissant)
Vous pouvez rajouter des fonctions-clés ou même vos propres fonctions dans le tableau $tabKeywords

A voir également

Ajouter un commentaire

Commentaires

Messages postés
93
Date d'inscription
samedi 9 juin 2001
Statut
Membre
Dernière intervention
6 mai 2005
1
au lieu de easyphp avec php5, essaie ca : http://www.wampserver.com/add-ons.php également en francais, ca a l'air sympa (pas testé encore)
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

il te trouv des div lorsque tu lui demande de compter les fonctions?? g vois pa où es le pb...
Par contre g crois kil ont arreté de développer easyPHP... du moins ya pas de nouvelles versions sorties depuis longtemps...
Essaie wamp5 à l'adresse suivante: http://wampserver.com
c'est un équivalent d'easyPHP mais il gère le PHP 5 (la dernière version est la 1.4 il me semble avec PHP 5.0.2)
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

a si il y a autre chose!
Moi il me trouve des fonction ABS alors que j'en ai pas!! (j'ai des div avec marquer "position:absolute" !
Messages postés
193
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
18 novembre 2009

ok merci passer a php5 je veux bien mais je ne suis pas douer pour l'installation des logiciels comme ça alors j'attend que le nouveau easyphp sorte!
encore merci
Messages postés
282
Date d'inscription
vendredi 16 mai 2003
Statut
Membre
Dernière intervention
19 juillet 2006

désolé je me suis trompé, c'est pas notice que tu dois modifier (encore ce serait possible...), c'est la variable allow_call_time_pass_reference dans le fichier php.ini (c'est ce que te précise ton message d'erreur), en la mettant a true

Ou passe sous PHP 5...
Afficher les 8 commentaires

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.