Извините, что люди забыли это, мне нужно прочитать первую «партию» комментария в примере php-файла:
<?php /** This is some basic file info **/ ?> <?php This is the "file" proper" ?>
Мне нужно прочитать первый комментарий внутри другого файла, но я полностью забыл, как получить / ** Это базовая информация о файле ** / в виде строки Извините, но спасибо в adavance
Существует token_get_all($code)
которая может быть использована для этого, и она более надежна, чем вы могли бы подумать.
Вот пример кода, чтобы получить все комментарии из файла (он не проверен, но этого должно быть достаточно, чтобы вы начали):
<?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]; } ?>
Я думаю, вы также можете попробовать это.
/** * 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]; }
Использовать это:
preg_match("/\/\*\*(.*?)\*\*\//", $file, $match); $info = $match[1];
Это то, что вы имеете в виду?
$file_contents = '/** sd asdsa das sa das sa a ad**/'; preg_match('#/\*\*(.*)\*\*/#s', $file_contents, $matches); var_dump($matches);
function find_between($from,$to,$string){ $cstring = strstr($string, $from); $newstring = substr(substr($cstring,0,strpos($cstring,$to)),1); return $newstring; }
затем просто вызовите: $comments = find_between('/\*\*','\*\*/',$myfileline);