PHP read file comments NOT file content - forgotten

前端 未结 5 1816
灰色年华
灰色年华 2020-12-16 07:30

Sorry folks forgotten this one, I need to read the first \"batch\" of comment in a php file example would be:



        
相关标签:
5条回答
  • 2020-12-16 07:35

    Use this:

    preg_match("/\/\*\*(.*?)\*\*\//", $file, $match);
    $info = $match[1];
    
    0 讨论(0)
  • 2020-12-16 07:41

    There's a token_get_all($code) function which can be used for this and it's more reliable than you first might think.

    Here's some example code to get all comments out of a file (it's untested, but should be enough to get you started):

    <?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) )
                continue;
            // Do something with the comment
            $txt = $token[1];
        }
    
    ?>
    
    0 讨论(0)
  • 2020-12-16 07:42
    function find_between($from,$to,$string){
       $cstring = strstr($string, $from);
       $newstring = substr(substr($cstring,0,strpos($cstring,$to)),1);
       return $newstring;
    }
    

    then just call : $comments = find_between('/\*\*','\*\*/',$myfileline);

    0 讨论(0)
  • 2020-12-16 07:48

    i think you can also try this.

    /**
    * 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];
    }
    
    0 讨论(0)
  • 2020-12-16 07:58

    Is this what you mean?

    $file_contents = '/**
    
    sd
    asdsa
    das
    sa
    das
    sa
    a
    ad**/';
    
    preg_match('#/\*\*(.*)\*\*/#s', $file_contents, $matches);
    
    var_dump($matches);
    
    0 讨论(0)
提交回复
热议问题