Page 1 sur 1

Manuel php off-line + recherche

Posté : 06 nov. 2008, 21:10
par jojolapine
Bonsoir à tous,
Je ne sais pas si je suis au bon endroit (peut-être que ça serait mieux dans vos contribution?)
Bref j'ai dévelloper rapidement un petit outil de recherche dans la documentation hors-ligne du site php.net, car je n'ai pas toujours internet à portée de main, et celà s'avère fort utile parfois ;)

Le script est assez sommaire, la recherche ne fonctionnera pas par exemple si vous rentrez dzte au lieu de date, mais ça reste très utilisable, surtout par des développeurs ;)

Donc pour tout ceux qui n'aiment pas les .chm, voici ce qui vous reste à faire:
téléchargez la documentation içi: http://www.php.net/download-docs.php
choisissez le format "Many HTML file", dans la langue que vous souhaitez
et ensuite, il suffit de vous créer un dossier dans votre arborescence serveur, où mettre ces fichiers:
index.php:
<?php
//coding: utf-8  (Scite configuration)

session_start();

//config
$DOSSIER='/home/joris/Documents/doc-web/php/';

//Pprint_r($_SERVER);

if(!empty($_GET['view'])){
	$fichier=$_GET['view'];
	$search=(isset($_SESSION['search']) ? $_SESSION['search'] : '');
}else{

	if(!empty($_POST['search'])){
		$_SESSION['search']=$_POST['search'];

		$search=preg_replace('#[^a-z]#','-',$_POST['search']);
		
		if(is_file($DOSSIER.'function.'.$search.'.html')){
		
			$fichier=$DOSSIER.'function.'.$search.'.html';
			
		}elseif(is_file($DOSSIER.'ref.'.$search.'.html')){
		
			$fichier=$DOSSIER.'ref.'.$search.'.html';
			
		}else{
	
		$res=glob($DOSSIER.'*'.$search.'*.html');

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="pragma" content="no-cache" />
	<meta name="keywords" content="" />
	<meta name="description" content="" />
	<meta name="robots" content="index,follow" />
	<meta http-equiv="content-language" content="fr">
	<title></title>
</head>
<body>
<h1>Aucune recherche exacte...</h1>
<h2>Suggestions:</h2>
<ul>
<?php
		if(!$res){
			echo '<li>Aucune suggestion... <a href="./index.php" title="retour">Retour au manuel</a></li>';
		} else {
			foreach($res as $item){
				$name=explode('/',$item);
				$name=$name[count($name)-1];
				$name2=str_replace($search,'<span style="font-weight: bold;color:orange">'.$search.'</span>',$name);
				echo '<li><a href="index.php?view='.$item.'" title="'.$name.'">'.$name2.'</a></li>';
			}
		}
?>
</ul>
</body>
</html>
<?php
		exit();
		}
	} else {
		$search=isset($_SESSION['search']) ? $_SESSION['search']:'';
		$fichier=$DOSSIER.'index.html';
	}
}


$content=file_get_contents($fichier);
echo preg_replace('#<div class="home">(.*)</div>#','<div class="home">$1<form method="post" action="index.php">
<p>Tappez votre recherche: 
<input value="'.$_SESSION['search'].'" id="sw" type="text" name="search" />
<input type="submit" name="chercher" /></p>
</form></div>',$content);
exit();
?>
et pour finir le .htaccess qui permet aux liens de la documentation de fonctionner:

Code : Tout sélectionner

RewriteEngine on RewriteRule ^(.*\.html)$ content.php?view=/home/joris/Documents/doc-web/html/$1 [L]
Il faut bien sur changer le chemin d'accès aux fichiers...
Voilà c'est développé vite fait en total non-respect des standards et tout et tout, mais c'est bien utile ;)

En espérant que ça serve!

Toutes suggestions sont les bienvenues!

EDIT: Changement de la méthode, les frames sont supprimées ;)

Re: Manuel php off-line

Posté : 06 nov. 2008, 22:00
par Victor BRITO
Toutes suggestions sont les bienvenues!
Justement. Est-il possible d'afficher le manuel comme tu le souhaites, mais recourir aux frames (qui ne sont pas sans poser de problèmes d'accessibilité) ?

Posté : 07 nov. 2008, 01:11
par jojolapine
Bonsoir,
ça doit être possible, mais il va falloir jouer à coup de regex, car le manuel php est déjà "formé", j'entend par là, que toute la structure de la page est figée, il faut donc que je réfléchisse un poil ;)
Mais ça va le faire ;)
je reviendrais demain ;)

EDIT: Voilà c'est fait, il n'y a plus de frames, seuelement un preg_replace(),...