2010-07-12 10 views
3

gens Désolé oublié celui-ci, je dois lire le premier « lot » de commentaire dans un exemple de fichier php serait:PHP lire les commentaires de fichiers fichier ne se contente pas - oublié

<?php 
/** This is some basic file info **/ 
?> 
<?php This is the "file" proper" ?> 

je dois lire le premier commenter dans un autre fichier mais j'ai totalement oublié comment obtenir le/** Ceci est quelques informations de base du fichier **/comme une chaîne Désolé, mais grâce à l'adavance

+0

''? Je ne sais pas vraiment, mais ce serait la première chose que j'essayerais –

+0

Thnk Mechko, mais quelque part dans le passé sombre et lointain j'ai trouvé une fonction pour le faire - je ne me souviens pas si c'est une 'fonction php' ou une coutume écrite – user351657

Répondre

13

Il y a une fonction token_get_all($code) qui peut être utilisé pour cela et il est plus fiable que vous devez d'abord pourriez penser.

Voici quelques exemples de code pour obtenir tous les commentaires d'un fichier (il est non testé, mais devrait être suffisant pour vous aider à démarrer):

<?php 

    $source = file_get_contents("file.php"); 

    $tokens = token_get_all($source); 
    $comment = array(
     T_COMMENT,  // All comments since PHP5 
     T_ML_COMMENT, // Multiline comments PHP4 only 
     T_DOC_COMMENT // PHPDoc comments  
    ); 
    foreach($tokens as $token) { 
     if(!in_array($token[0], $comment)) 
      break; 
     // Do something with the comment 
     $txt = $token[1]; 
    } 

?> 
+2

Hey je voudrais changer cela seulement un peu ... changer le 'break' à un 'continuer' afin que vous puissiez continuer à trouver tous les commentaires dans le contenu. –

0

Est-ce que vous voulez dire?

$file_contents = '/** 

sd 
asdsa 
das 
sa 
das 
sa 
a 
ad**/'; 

preg_match('#/\*\*(.*)\*\*/#s', $file_contents, $matches); 

var_dump($matches); 
+0

kieran - on dirait que vous avez aussi un de ces types de lundi. agréable de 'bosse' en vous à nouveau :) –

+0

hein, ouais je vais avoir un de ces jours vraiment productifs au travail .. * toux * –

0

Utilisez ceci:

preg_match("/\/\*\*(.*?)\*\*\//", $file, $match); 
$info = $match[1]; 
0
function find_between($from,$to,$string){ 
    $cstring = strstr($string, $from); 
    $newstring = substr(substr($cstring,0,strpos($cstring,$to)),1); 
    return $newstring; 
} 

alors il suffit d'appeler: $comments = find_between('/\*\*','\*\*/',$myfileline);

1

i pense que tu peux aussi essayer ça.

/** 
* Return first doc comment found in this file. 
* 
* @return string 
*/ 
function getFileCommentBlock($file_name) 
    { 
    $Comments = array_filter(
     token_get_all(file_get_contents($file_name)),function($entry) { 
      return $entry[0] == T_DOC_COMMENT; 
     } 
    ); 
    $fileComment = array_shift($Comments); 
    return $fileComment[1]; 
}