我试图从PHP文件中的这段代码中解析DB_HOST,DB_NAME,DB_USER和DB_PASSWORD的值:
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
我目前的方法(据我所知,无论如何)是将文件存储在变量中,并使用正则表达式一次解析每个定义的值。我可以做到这一切都很好,花花公子。但是,我只知道基本的正则表达式语法,并且不知道如何构造一个适用于此的语法。
我提前感谢你的帮助〜
答案 0 :(得分:3)
这可以帮助您找到解决方案。它只是从每一行中提取 word 字符(字母数字和下划线)的所有序列,并使用第二和第三个字段作为变量名称和值。
如果值比简单的带引号的字符串更复杂,或者值可以包含除字符之外的其他内容,例如空格,那么这不会起作用。
use strict;
use warnings;
while (<DATA>) {
my @fields = /\w+/g;
my ($var, $val) = @fields[1,2];
printf "%-12s = %s\n", $var, $val;
}
__DATA__
define('DB_NAME', 'foobar_db');
define('DB_USER', 'foobar_user');
define('DB_PASSWORD', 'foobar_password');
define('DB_HOST', 'localhost');
<强>输出强>
DB_NAME = foobar_db
DB_USER = foobar_user
DB_PASSWORD = foobar_password
DB_HOST = localhost