Findfunction - recherche de fonctions php

Soyez le premier à donner votre avis sur cette source.

Vue 4 631 fois - Téléchargée 319 fois

Description

Voici ma derniere creation, que j'ai fait dans le but de m'aider à mieu trouver certaines fonctions sans passer des heures sur nexent ou php.net.
Il s'agit d'un systeme qui repertorier je l'espere un maximum de fonctions PHP lier avec un moteur de recherche basique, et qui vous renvoies vers sa documentations.

Source / Exemple :


<?php
error_reporting(E_ALL & ~E_NOTICE); // ont va dire que sa cache certaines choses comprometente (lol)
echo "<html><head><title>Recherches de fonctions - FindFunctionSubEngine by juki</title></head><body>";
$db_host="";      // Adresse de la base de données (exemple : sql.free.fr)
$db_user="";  // Username (pour la base de données)
$db_pass="";         // Password (pour la base de données)
$db="";       // Nom de la base de données
mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
mysql_select_db($db) or die("Unable to select database");
$maxnumberpage = "101";
$q = $_GET[q];
$p = $_GET[p];
$color = $_GET[color];
if ($color != "1") { $color = 0; }
$pagetrip = "no";
$pagination = 10;
if (!$p) {
$pagetrip = "yes";
$pagingmin = 0;
}
if (ctype_digit($p) AND $p <= $maxnumberpage) {
if ($p == 1 OR $p == 0) { $pagingmin = 0; $pagetrip = "yes"; }
else {
$pagingmin = $p*10;
$pagetrip = "yes";
}
}
if ($q) {
$q = substr($q, 0,50);
$q = str_replace("%00","",$q);
$q = str_replace("<","",$q);
$q = str_replace(">","",$q);
$q = str_replace("(","",$q);
$q = str_replace(")","",$q);
$q = str_replace('"','',$q);
$q = str_replace("'","",$q);
$q = str_replace("`","",$q);
$q = str_replace("#","",$q);
$q = str_replace("*","",$q);
$q = str_replace("/","",$q);
$q = str_replace(" ","_",$q);
$q = str_replace("\$","",$q);
$q = str_replace("%20"," ","$q");
$q = str_replace("-","_",$q);
$secu1_tofind = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; 
$secu2_replac = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
$q = strtr($q,$secu1_tofind,$secu2_replac);
$q = str_replace("\\","_","$q");
$q = strtolower($q);
$qtest = str_replace("_","",$q);
$strlentest = strlen($qtest);
$strlen = strlen($q);
$nocousic = "no";
if ($strlen >= 2 AND $strlen < 50 AND $qtest != "" AND $strlentest >= 2) { $nocousic = "yes"; }
}
echo "Recherche de fonctions PHP (1387 répertorier)";
echo "<form action=index.php method=get>";
echo "<i>Nom entier ou une partie du nom de la fonction :</i><br>";
echo "<input type=text name=q value=".$q."><br>";
if ($color == 1) { echo "<input type=checkbox name=color value=1 checked> Avec colorisation<br>"; }
if ($color != 1) { echo "<input type=checkbox name=color value=1> Avec colorisation<br>"; }
echo "<input type=submit value='Va chercher!'></form>";
echo "<br>Exemples fonctionel : <a href=index.php?q=mysql>index.php?q=mysql</a> & <a href=index.php?q=str+sh>index.php?q=str+sh</a>";
echo "<br><font size=1>Powered with Apache Php Module and MySQL DataBase Server<BR>Cette application utilise des cookies pour vos préférences.</font>";
if ($nocousic == "yes" AND $pagetrip == "yes") {
 $mots = str_replace('+', '-', trim($q));
     $mots = str_replace('\'', ' ', $mots);
     $mots = str_replace(',', '-', $mots);
     $mots = str_replace(':', '-', $mots);
     $tab = explode(' ' , $mots);
      $nb = count($tab);
  
$sqli = "SELECT * FROM phptool_allfunctions WHERE name LIKE '%$tab[0]%' ";

     for($i = 1; $i < $nb; $i++){
       $sqli .= "OR LIKE '%$tab[$i]%'";
     }

     $sqli .= "ORDER BY name ASC";
      $resulti = mysql_db_query($db, $sqli);
$nbrresultati = mysql_num_rows($resulti);
if ($nbrresultati == 0) {
echo "<hr><br><br>Desoler, aucune fonction correspondant à votre recherche n'a été trouver.<BR>"; 
        $tabmov = explode('_' , $mots);
     $nbmov = count($tabmov);
         if ($nbmov > 1) { echo "Avez-vous deja essayer avec les termes suivant :<BR>";

for($imov = 0; $imov < $nbmov; $imov++){
       echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="index.php?q='.$tabmov[$imov].'"><b>'.$tabmov[$imov].'</b></a> ?<br>';
     }
    }
$finol = "yes"; 
}
if ($finol != "yes") {
$pagenbr = (ceil($nbrresultati / $pagination)) - 1;
     $sql = "SELECT * FROM phptool_allfunctions WHERE name LIKE '%$tab[0]%' ";

     for($i = 1; $i < $nb; $i++){
       $sql .= "OR LIKE '%$tab[$i]%'";
     }

      $sql .= "ORDER BY name ASC LIMIT $pagingmin,10";
     //$sql .= "ORDER BY name ASC LIMIT $pagingmin,$pagingmax";
      $result = mysql_db_query($db, $sql);
echo "<hr>Nombre de fonctions trouvée : <b>".$nbrresultati."</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page";
if ($pagenbr == 1) { echo ": 1 unique"; $nogeneratenumberpage = "yes"; }
if ($pagenbr > 1) { echo "s: "; }
if ($pagenbr > 1 AND $p != 1 AND $p) {
echo '&nbsp;&nbsp;<a href="index.php?q='.$q.'&p=1';
if ($color == 1) { echo "&color=1"; }
echo '" title="Premiere page"><b>«</b></a>';
}
if ($pagenbr > 1 AND $p != 1 AND $p) {
echo '&nbsp;&nbsp;<a href="index.php?q='.$q.'&p='.($p-1).'';
if ($color == 1) { echo "&color=1"; }
echo '" title="Page presedente"><b><</b></a>&nbsp;&nbsp;';
}
while($pagination_cac != $pagenbr AND $nogeneratenumberpage != "yes") {
 $pagination_cac = $pagination_cac+1;

if ($pagination_cac == $maxnumberpage) { $pagination_cac = $pagenbr; $problemewhilerecontrez = "yes"; }
if ($problemewhilerecontrez != "yes") {
 if ($p == $pagination_cac) {
  echo "".$pagination_cac."&nbsp;&nbsp;";
 }
 elseif ($p == "") {
  if ($pagination_cac == 1) {
   echo "".$pagination_cac."&nbsp;&nbsp;";
  }
  else {
   echo '<a href="index.php?q='.$q.'&p='.$pagination_cac.'';
   if ($color == 1) { echo "&color=1"; }
   echo '">'.$pagination_cac.'</a>&nbsp;&nbsp;';
  }
 }
 else {
  if ($pagination_cac == $p) {
   echo "".$pagination_cac."&nbsp;&nbsp;";
  }
  else {
   echo '<a href="index.php?q='.$q.'&p='.$pagination_cac.'';
   if ($color == 1) { echo "&color=1"; }
   echo '">'.$pagination_cac.'</a>&nbsp;&nbsp;';
  }
 }
}
}
if ($pagenbr > 1 AND $pagenbr != $p) { echo '<a href="index.php?q='.$q.'';
if ($color == 1) { echo "&color=1"; }
if (!$p) { echo '&p=2" title="Page suivante"><b>></b></a>'; }
else { echo '&p='.($p+1).'" title="Page suivante"><b>></b></a>'; }
}
if ($pagenbr > 1 AND $pagenbr != $p) {
echo '&nbsp;&nbsp;<a href="index.php?q='.$q.'&p='.$pagenbr.'';
if ($color == 1) { echo "&color=1"; }
echo '" title="Derniere page"><b>»</b></a>';
}
echo "<BR><BR>";
// debut etape "mes dernieres 10 recherches"
if (!$HTTP_COOKIE_VARS["allfunc_indexid"]) {
$reqlop1 = @mysql_query("SELECT * FROM phptool_allfunctions_lsid") or die ('<BR>Erreur SQL LOP#1 (SELECT)!<BR>');
$unbrresultatlop = @mysql_num_rows($reqlop1);
$lopmaxid = $unbrresultatlop +1;
setcookie("allfunc_indexid","$lopmaxid",time()+155520000);
srand((double)microtime()*1000000);
$lop_key = rand(0,32000);
setcookie("allfunc_indexkey","$lop_key",time()+155520000);
$querylop2 = "INSERT INTO phptool_allfunctions_lsid VALUES ('', '$lop_key')";
@mysql_query($querylop2) or die ('<BR>Erreur SQL LOP#2 (INSERT)!<BR>');
$contruct_lopperso = "phptool_af_ls_".$lopmaxid."";
$query = "CREATE TABLE `$contruct_lopperso` (id int(11) NOT NULL auto_increment,idate varchar(255) DEFAULT '0' NOT NULL,iquer varchar(255) DEFAULT '0' NOT NULL,iip varchar(255) DEFAULT '0' NOT NULL,key id (id)) TYPE=MyISAM;";
@mysql_query($query) or die ('<BR>Erreur SQL LOP#3 (CREATE)!<BR>');
$lop_ip = $_SERVER['REMOTE_ADDR'];
$dateactuel1 = date("d/m/Y");
$dateactuel2 = date("G\hi");
$dateactuel3 = "".$dateactuel1." ".$dateactuel2."";
$querylop4 = "INSERT INTO $contruct_lopperso VALUES ('','$dateactuel3','$q','$lop_ip')";
@mysql_query($querylop4) or die ('<BR>Erreur SQL LOP#4 (INSERT)!<BR>');
$loppnoexpretise = "yes";
}
if (ctype_digit($HTTP_COOKIE_VARS["allfunc_indexid"]) AND ctype_digit($HTTP_COOKIE_VARS["allfunc_indexkey"]) AND $loppnoexpretise != "yes") {
$lopppid = $HTTP_COOKIE_VARS["allfunc_indexid"];
$lopppkey = $HTTP_COOKIE_VARS["allfunc_indexkey"];
if ($lopppid < 10000 AND $lopppkey < 33000) {
$reqkilo1 = @mysql_query("SELECT * FROM phptool_allfunctions_lsid WHERE id LIKE '$lopppid'") or die ('Erreur SQL KILO1<BR>');   
$lopppresnbr = mysql_num_rows($reqkilo1);
if ($lopppresnbr == 1) {
$datakilo1 = mysql_fetch_array($reqkilo1);
if ($lopppkey == $datakilo1[keyz]) {
$contruct_lopperso2 = "phptool_af_ls_".$lopppid."";
$lop_ip = $_SERVER['REMOTE_ADDR'];
$dateactuel1 = date("d/m/Y");
$dateactuel2 = date("G\hi");
$dateactuel3 = "".$dateactuel1." ".$dateactuel2."";
$querylop7 = "INSERT INTO $contruct_lopperso2 VALUES ('','$dateactuel3','$q','$lop_ip')";
@mysql_query($querylop7) or die ('Erreur SQL KILO2<BR>');
}
}
}
}
// fin etape "mes dernieres 10 recherches"
$now = 1*$pagingmin+1;
$trouvaille = "no";
while($datav = mysql_fetch_array($result)){
$formatname =  strtoupper(str_replace(' ', '_', $datav[name]));
if ($color == 1) { $formatname = str_replace(strtoupper($q),"<font color=green>".strtoupper($q)."</font>",$formatname); }
echo "<b>".$now.") ".$formatname."();</b>";
if (strtoupper($q) == $formatname) { echo " <font color=red>EXPRESSION EXACT</font>"; }
echo "<br>Documentation : <br>&nbsp;&nbsp;&nbsp;<a href='".$datav[urlfrphpnet]."' target=_blank>Depuis PHP.NET (en français)</a><BR>&nbsp;&nbsp;&nbsp;<a href='".$datav[urlfrnexennet]."' target=_blank>Depuis NEXEN.NET (en français)</a><BR><BR>";
$now = $now + 1;
$trouvaille = "yes";
}
if ($trouvaille == "no") { echo "Erreur : vous tentez accedez à un resultat non trouvable!<BR>"; }
if ($problemewhilerecontrez == "yes") { echo "<b>Erreur : un probleme lors de la recherche à été recontrez, le processus va s'achever pour la securite et la stabilité du serveur.</b><BR>"; exit; }
}
}
// debut afficheur "mes dernieres 10 recherches"
echo "<br><br><br><i>Mes 10 dernires recherches :</i><BR>";
if (ctype_digit($HTTP_COOKIE_VARS["allfunc_indexid"]) AND ctype_digit($HTTP_COOKIE_VARS["allfunc_indexkey"])) {

$lopppid = $HTTP_COOKIE_VARS["allfunc_indexid"];
$lopppkey = $HTTP_COOKIE_VARS["allfunc_indexkey"];
if ($lopppid < 10000 AND $lopppkey < 33000) {
$reqkilo1 = @mysql_query("SELECT * FROM phptool_allfunctions_lsid WHERE id LIKE '$lopppid'") or die ('Erreur SQL KILO1<BR>');   
$lopppresnbr = mysql_num_rows($reqkilo1);
if ($lopppresnbr == 1) {
$datakilo1 = mysql_fetch_array($reqkilo1);
if ($lopppkey == $datakilo1[keyz]) {
$contruct_lopperso3 = "phptool_af_ls_".$lopppid."";
$reqkilo8 = @mysql_query("SELECT * FROM $contruct_lopperso3 ORDER BY id DESC LIMIT 0, 10");
$kilolololonbr = 0;
while($data8 = mysql_fetch_array($reqkilo8)){
$kilolololonbr = $kilolololonbr + 1;
echo "&nbsp;&nbsp;&nbsp;&nbsp;".$kilolololonbr.") <b>".$data8[iquer]."</b> le ".$data8[idate]."";
echo '&nbsp;&nbsp;<a href="index.php?q='.$data8[iquer].'';
   if ($color == 1) { echo "&color=1"; }
   echo '">[relancer la recherche]</a><br>';
$lastseekok = "yes";
}
}
}
}
}
 if ($lastseekok != "yes") { echo "<i>Aucune recherche n'a été effectuer</i>"; }
//fin afficheur "mes 10 denrires recherches"
mysql_close();
echo "</body></html>";
?>

Conclusion :


Les 2 tables sql sont dans le zip.

Si vous trouvez de petits bugs ou des fonctions qui n'apparaisent pas dans la liste contactez-moi.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Moi j'ai une version de documentation mis à jour chaque heure sur http://jsgoupil.is-a-geek.com/livedocs/ ou sur http://jsgoupil.is-a-geek.com:8080/livedocs/ (dépendamment si mon port 80 est bloqué parfois...)
Donc c'est plus utile que de chercher sur de la doc vieille de 6 mois...
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Claire!
Au sujet du if et de la boucle, sa me rappel un vieu souvenir.. sous mIRC.. enfin bref je penserais à la prochaine d'utilise mon don de flemard :)
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

Je pense que la flemmardise naturelle du programmeur devrait pouvoir l'empêcher de faire ce genre de choses :) Je me souviens d'un code sur cppfrance ou le gars s'était tué à faire des centaines (littéralement!!) de if parce qu'il ne connaissait pas les boucles... c'est pas humain, tu te dis forcément qu'il doit exister une meilleure façon quoi :/
Messages postés
947
Date d'inscription
mercredi 19 novembre 2003
Statut
Membre
Dernière intervention
5 avril 2008
3
Salut,

GRenard > frachement je savais meme pas qu'elle exister cette fonction :( merci pour ta remarque

Kirua > oui pour l'adresse direct, enfaite j'avais placer à l'avance toute les fonctions dans un .txt je formater en remplacent les _ par des - et c'est vrai! j'aurais put directement le faire ce qui aurait aleger fortement la db!
Je me suis baser sur leurs principes.

Donc là je vais preparer pendant que j'aurais un peu de temps à moi la version ASP (faudrais encore que je trouve une documentation complete) et je met tout à jour.

N'empeche je me suis tuer 1 journée entiere à les regroupez!! lol
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

d'autant plus que tu peux récupérer automatiquement la doc de chaque fonction comme ça:

http://www.php.net/nom_de_la_fonction

Donc: get_definded_functions, puis pour chacune tu appelles la page HTTP et tu en récupères la description utile... où bien tu continues d'utiliser le site web, ou bien tu télécharges la doc officielle au format .chm, qui intègre déjà un moteur de recherche. Ouèh, ça épargnera au moins un surcoût de bande passante à php.net ;)
Afficher les 9 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.