我试图用regex替换wp-config中的一些内容,但我无法让它工作。
下面是我的regex模式:
(?=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被翻译成其他语言。
发布于 2013-10-10 09:12:18
你已经改变了向前看和向后看的顺序。
"/(?=DB_NAME', ')(.*?)(?<='\);)/"应:
"/(?<=DB_NAME', ')(.*?)(?='\);)/"发布于 2013-10-10 09:12:20
改为:
$configContent = preg_replace("/(?=DB_NAME', ')(.*?)(?='\);)/", $databaseName, $configContent);
// here ___^发布于 2016-05-14 19:44:23
$configContent = preg_replace(
'/define\([\s]*[\'"]DB_NAME[\'"][\s]*,' .
'[\s]*[\'"][^\'"]*[\'"][\s]*\)/i',
"define('DB_NAME', '{$databaseName}')",
$configContent);https://stackoverflow.com/questions/19291517
复制相似问题