我需要从我的Python脚本中获取PHP(Wordpress)配置文件中的一些数据。我如何解析配置数据?例如,我如何获得 $ wp_version 值? 配置示例:
/**
* The WordPress version string
*
* @global string $wp_version
*/
$wp_version = '3.5.1';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
*
* @global int $wp_db_version
*/
$wp_db_version = 22441;
/**
* Holds the TinyMCE version
*
* @global string $tinymce_version
*/
$tinymce_version = '358-23224';
/**
* Holds the required PHP version
*
* @global string $required_php_version
*/
$required_php_version = '5.2.4';
/**
* Holds the required MySQL version
*
* @global string $required_mysql_version
*/
$required_mysql_version = '5.0';
$wp_local_package = 'en_EN';
答案 0 :(得分:5)
你知道PHP中的一个简单变量就像$foo = 'bar';
,让我们创建一个不考虑$_GET
或$foo['bar']
之类的正则表达式:
$
开始,请注意我们需要撤消它:\$
$
之后的第一个字符不能是数字,必须是字母或下划线:\$[a-z]
\$[a-z]\w*
\$([a-z]\w*)
\$([a-z]\w*)\s*=\s*
;
:\$([a-z]\w*)\s*=\s*(.*?);$
m
修饰符,分别使^$
匹配开头和结尾。注1:此正则表达式将在嵌套变量 $ fail ='en_EN'时失败; $ fail2 ='en_EN';
注2:不要忘记使用 i 修饰符使其不区分大小写。
答案 1 :(得分:1)
我编写了一个小的python脚本,用于从wordpress的wp-config.php
文件中获取数据库登录信息,以进行自动站点备份。
以下是我的代码的相关部分(GitHub的语法突出显示在Python的三重引用字符串中存在问题):
#!/usr/bin/env python3
import re
define_pattern = re.compile(r"""\bdefine\(\s*('|")(.*)\1\s*,\s*('|")(.*)\3\)\s*;""")
assign_pattern = re.compile(r"""(^|;)\s*\$([a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*)\s*=\s*('|")(.*)\3\s*;""")
php_vars = {}
for line in open("wp-config.php"):
for match in define_pattern.finditer(line):
php_vars[match.group(2)]=match.group(4)
for match in assign_pattern.finditer(line):
php_vars[match.group(2)]=match.group(4)