解析 PHP 条评论以获取元变量

Parse PHP comments for get meta variable

我正在使用这个preg_match

preg_match( '/^[ \S\t\/*#@]*'.$regex.': (.*)$/', $file_data, $match

从 8KB 的 php 文件头中提取标签。例如,如果我需要从

获取模块的 Some example 的值
/*
 * Some example: Lorem ipsum
 *
 */

preg_match会变成这样:

preg_match( '/^[ \S\t\/*#@]*Some example: (.*)$/', $file_data, $match

我需要获取 Lorem ipsum,但我的 preg_match 不起作用。请帮我!

完整 PHP 来源:

function get_module_data($path, $default_headers = ''){

    $module = fopen($path, 'r');

    // Pull only the first 4kiB of the file in.
    $module_data = fread($module, 4096);

    // PHP will close file handle, but we are good citizens.
    fclose($module);


    // Make sure we catch CR-only line endings.
    $module_data = str_replace("\r", "\n", $module_data);


    $all_headers = $default_headers;


    foreach ($all_headers as $field => $regex) {
        if (preg_match('/^.*?' . $regex . ':(.*)$/mi', $module_data, $match) && $match[1]){
            $all_headers[$field] = cleanup_comment($match[1]);
        } else {
            $all_headers[$field] = '';
        }
    }


    return $all_headers;
}

此函数需要参数:

/**
 * @param string $path path to file.
 * @param array  $default_headers must contain $key (name of parameter) with $value (Regex part without ":". E.g. 
 <code> 
$default_headers = array(
'AuthorName' => 'Author Name'
);
</code>
for search in file value of `Author Name: Lorem Ipsum` (will be `Lorem Ipsum`)
*/

请记住,此功能是 Izumrud 系统的一部分。感谢您的帮助!

从 php 文件中获取内容后,你应该逐行解析它,如果你在行首找到 * 字符,只需使用 str_replace("*", "", $string); 并粘贴特定行。

(在我的 phone 上,不能真正编写代码,但这应该工作得很好)

怎么样:

$file_data = <<<EOD
/*
 * Some example: Lorem ipsum
 *
 */
EOD;
preg_match( '/^.*?Some example: (.*)$/m', $file_data, $match);
print_r($match);

输出:

Array
(
    [0] =>  * Some example: Lorem ipsum
    [1] => Lorem ipsum
)