Bonsoir,
Je voudrais faire mon propre générateur de documentation PHP.
J'ai donc effectuer des tests pour voir si j'étais capable en prenant un code source PHP, de retrouver les commentaires types /** */ définissant donc la documentation (type Java).
Actuellement j'arrive dans mes test à prendre un commentaire et le parser mais seulement si il n'y à qu'une section, j'explique.
Un commentaire :
/**
* @version 1.0
*/
J'arrive à le parser sans problème, ici c'est l'exemple de la version (j'ai testé en premier l'exemple du tag author), mais si on ajoute un second tag dans le commentaire, ça fonctionne plus.
Je pense donc avoir un problème au niveau de mon regexp.
Voici le code que j'ai fait actuellement :
<?php
$file = file_get_contents('test.php');
if ( preg_match_all("#\/\*\*\n[ ](.+)\n\*\/#", $file, $matches, PREG_SET_ORDER) )
{
//print_r($matches);
//echo count($matches[0]);
$line = substr($matches[0][1], 2);
$tok = strtok($line, ' ');
if ($tok === '@author')
{
echo "<b>Auteur :</b><br />\r\n";
echo substr( $line, strlen($tok)+1 );
}
else if ($tok === '@version')
{
echo "<b>Version :</b><br />\r\n";
echo substr( $line, strlen($tok)+1 );
}
}
?>
Avec mon regexp actuel, j'interdit les commentaires sur une seule ligne (donc mettre /** * @version 1.0 */ par exemple), il doit bien y avoir un espace en début de ligne mais j'arrive pas en plus de gérer plusieurs tags dans le même commentaire, j'arrive pas à indiquer qu'il faut obligatoirement un espace ET une astérisque.
Je pense donc que c'est le regexp qui est pas totalement bon.
Merci d'avance pour votre aide.