Un moteur de recherche de fonctions sur votre serveur local comme celui de php.net ? Pas de problème !!
Un peu de programmation et c'est réglé.
Prérequis
Il ne faut pas énormément de connaissances en php et html :
    - connaître le fonctionnement des formulaires ;
    - les variables d'environement ;
    - manipulations de fichier.
Connaître ceci sera suffisant.
Si vous n'êtes pas encore assez avancé, le script complet est à la fin du tutorial.
Installation des fichiers d'aide
Nous n'allons tout de même pas écrire une par une les pages avec les explications des fonctions !!
Des "packs" sont déja tout faits, prêts a être téléchargés. Le site Nexen nous en propose de très biens
en français (et souvent remis à jour !!). Sur cette page, nous trouverons la liste des packs. Je vous conseille de télécharger la version complète.
Complète ou pratique, il vous faut le format html (zip, gzip ou bzip sans aucune importance).
Décompressez l'archive dans le dossier de votre choix
(chez moi, ça se trouve dans easyphp/www/aide_php/documentation)
Ca y est l'installation des fichiers d'aides est finie.
Il faut savoir que les noms de fichiers comportent le nom de la fonction.
Par exemple pour la fonction 'chr()', le nom de fichier est "function.chr.html".
Donc en tapant 'chr' ou meme 'hr', le lien vers la page sera affiché.
Création du moteur de recherche de base
Nous allons créer notre moteur de recherche "de base".
Je l'appelle de base car il fonctionnera mais pour la mise en page et au niveau pratique il ne sera pas au top.
Nous l'améliorerons plus tard.
Voici déjà le code avec commentaires.
<html>
<head>
<title>Moteur de recherche des fonctions PHP.</title>
</head>
<body>
<?
// si le formulaire n'a pas encore ete envoye
if (getenv('REQUEST_METHOD') == "GET")
{
?>
<p><font size="4" color="#800000"><b><u><i>
Moteur de recherche des fonctions PHP.
</i></u></b></font></p>
<form action="<? echo getenv('SCRIPT_NAME'); ?>" method="post">
<p>Tapez le nom de la fonction ou une partie du nom :
<input type="text" name="fonction" size="25" maxlength="100"><br>
<input type="submit" value="Chercher"></p>
</form>
<?
}
// si le formulaire a deja ete envoye
else
{
// recupere le nom de la fonction
$fonction = $HTTP_POST_VARS['fonction'];
// si la valeur de $fonction est vide
//-> on redirectionne sur la meme page pour voir le formulaire
if (empty($fonction)) header ("Location: ".getenv('SCRIPT_NAME'));
// le dossier ou se trouve les fichier html
// il faut mettre un \ devant un autre \
// pour empecher le caractere d'exclusion
$dossier = "documentation\\";
// ouvre le dossier
$biblio = opendir($dossier);
// on scanne le dossier fichier par fichier
while ($page = readdir($biblio))
{
// si la valeur de $fonction se trouve dans le nom de la page
if (stristr($page,$fonction))
{
// on affiche le lien
echo ("<a href='".$dossier.$page."'>".$page."</a><br>");
}
}
}
?>
</body>
</html>
Comme ceci, nous aurons la liste des pages qui expliquent les fonctions.
C'est bien mais on peut encore mieux faire...
Amelioration de notre moteur de recherche
Tout d'abord la question à se poser est comment l'ameliorer ?
Voici à quoi j'ai pensé:
    - Apres avoir lancé la recherche, il serait pratique d'avoir le formulaire en haut de page...
    - Dans ce formulaire, pourquoi ne pas afficher la valeur entrée dans le formulaire precedent pour ne
      pas etre obligé de tout retaper lors d'une faute de frappe ?
    - Dans le nom des pages, les _ des fonctions sont remplacés par des - (par exp: session_start()
      devient session-start()), pourquoi ne pas le faire automatiquement pour eviter les erreurs ?
Nous allons appliquer cela:
<html>
<head>
<title>Moteur de recherche des fonctions PHP.</title>
</head>
<body>
<?
// si le formulaire n'a pas encore ete envoye
if (getenv('REQUEST_METHOD') == "GET")
{
?>
<p><font size="4" color="#800000"><b><u><i><br>
Moteur de recherche des fonctions PHP.<br>
</i></u></b></font></p>
<form action="<? echo getenv('SCRIPT_NAME'); ?>" method="post">
<p>Tapez le nom de la fonction ou une partie du nom sans les ():
<input type="text" name="fonction" size="25" maxlength="100"><br>
<input type="submit" value="Chercher"></p>
</form>
<?
}
// si le formulaire a deja ete envoye
else
{
// recupere le nom de la fonction
$fonction = $HTTP_POST_VARS['fonction'];
// si la valeur de $fonction est vide
// -> on redirectionne sur la meme page pour voir le formulaire
if (empty($fonction)) header ("Location: ".getenv('SCRIPT_NAME'));
// le dossier ou se trouvent les fichier html
// il faut mettre un \ devant un autre \
// pour empecher le caractere d'exclusion
$dossier = "documentation\\";
// ouvre le dossier
$biblio = opendir($dossier);
// affichage du formulaire a nouveau
?>
<p><font size="4" color="#800000"><b><u><i>
Moteur de recherche des fonctions PHP.
</i></u></b></font></p>
<form action="<? echo getenv('SCRIPT_NAME'); ?>" method="post">
<p>Tapez le nom de la fonction ou une partie du nom sans les ():
<input type="text" value="<? echo $fonction; ?>" name="fonction"
size="25" maxlength="100"><br>
<input type="submit" value="Chercher"></p>
</form>
<p><hr></p>
<?
// transforme les _ en -
$fonction = str_replace("_","-", $fonction);
// on scanne le dossier fichier par fichier
while ($page = readdir($biblio))
{
// si la valeur de $fonction se trouve dans le nom de la page
if (stristr($page,$fonction))
{
// on affiche le lien
echo ("<a href='".$dossier.$page."'>".$page."</a><br>");
}
}
}
?>
</body>
</html>
Encore des améliorations ??
Bien sur !!
On pourrait surligner dans les liens la valeur mise dans le formulaire...
et encore plein d'autres choses ...