正则表达式匹配WordPress wp-config配置

时间:2013-10-10 09:07:34

标签: php regex wordpress

我试图用正则表达式替换wp-config中的某些内容,但我无法让它工作。

这是我的正则表达式模式:

(?=DB_NAME', ')(.*?)(?<='\);)

这是配置的片段:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('DB_NAME', 'database_name_here');

/** MySQL database username */
define('DB_USER', 'username_here');

想法是替换database_name_here 和php:

$configContent = preg_replace("/(?=DB_NAME', ')(.*?)(?<='\);)/", $databaseName, $configContent);

结果如下:

// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define('database-name

/** MySQL database username */
define('DB_USER', 'username_here');

所以模式不起作用。但我不知道如何解决它。为什么组中包含了外观?

我不使用str_replace并替换database_name_here的原因是因为我将在多种语言中使用它。并且database_name_here已翻译成其他语言。

3 个答案:

答案 0 :(得分:4)

你已经改变了前瞻和后瞻的顺序。

"/(?=DB_NAME', ')(.*?)(?<='\);)/"

应该是:

"/(?<=DB_NAME', ')(.*?)(?='\);)/"

答案 1 :(得分:2)

更改为:

$configContent = preg_replace("/(?=DB_NAME', ')(.*?)(?='\);)/", $databaseName, $configContent);
//                                            here ___^

答案 2 :(得分:1)

$configContent = preg_replace(
    '/define\([\s]*[\'"]DB_NAME[\'"][\s]*,' .
    '[\s]*[\'"][^\'"]*[\'"][\s]*\)/i',
    "define('DB_NAME', '{$databaseName}')",
    $configContent);