Compteur de fonctions

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

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.