Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPTEUR DE FONCTIONS


Information sur la source

Catégorie :Fichier / Disque Niveau : Initié Date de création : 06/11/2004 Date de mise à jour : 06/11/2004 15:29:58 Vu : 1 996

Note :
3 / 10 - par 1 personne
3,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • <?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>";
  • ?>
<?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
 

Historique

06 novembre 2004 15:29:58 :

Commentaires et avis

signaler à un administrateur
Commentaire de windu le 06/11/2004 15:27:52

Euh... petits détails!! la liste des fonctions contenus dans le tableau $tabKeywords sera allongé au fur et à mesure que je rajouterai des fonctions (ya 3000 fonctions PHP, ca va prendre 5 minutes!!!)
Autre chose: je sais pas pourquoi mais le texte va pas à la ligne automatiqument... en fait le tableau contient déjà environ 50 fonction (toutes les fonction mysql et les principales utilisées: echo, print_r, isset...)

Merci de laisser vos commentaires sur le code ou me dire s'il y a une erreur dans l'écriture des noms des fonctions

signaler à un administrateur
Commentaire de stanilou le 06/11/2004 19:18:26

J'obtien un message d'erreur! Sinon l'idéé est vraiment bonne, j'avou ne jamais y avoir pensé!
Erreur:
Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in c:\documents and settings\nats\mes documents\site crée\php\site\save\test de page.php on line 22

signaler à un administrateur
Commentaire de windu le 06/11/2004 22:38:35

a oki, je vois ou est le problème... j'ai codé sous PHP 5 et j'ai utilisé le "&"...mais tu sembles etre toujours osus PHP 4.x, ce genre de message s'affiche pour dire que la variable est transmise par reference... modifie le niveau d'erreur a afficher avec notice()

signaler à un administrateur
Commentaire de windu le 06/11/2004 22:40:04

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...

signaler à un administrateur
Commentaire de stanilou le 07/11/2004 12:33:49

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

signaler à un administrateur
Commentaire de stanilou le 07/11/2004 12:50:21

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" !

signaler à un administrateur
Commentaire de windu le 07/11/2004 14:41:52

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)

signaler à un administrateur
Commentaire de seyev le 07/11/2004 14:43:24

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)

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,811 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.