1

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 と replace database_name_here を使用しない理由は、これを複数の言語で使用するためです。また、database_name_here は他の言語に翻訳されています。

4

3 に答える 3

4

先読みと後読みの順序を入れ替えました。

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

次のようにする必要があります。

"/(?<=DB_NAME', ')(.*?)(?='\);)/"
于 2013-10-10T09:12:18.190 に答える
2

への変更:

$configContent = preg_replace("/(?=DB_NAME', ')(.*?)(?='\);)/", $databaseName, $configContent);
//                                            here ___^
于 2013-10-10T09:12:20.223 に答える
1
$configContent = preg_replace(
    '/define\([\s]*[\'"]DB_NAME[\'"][\s]*,' .
    '[\s]*[\'"][^\'"]*[\'"][\s]*\)/i',
    "define('DB_NAME', '{$databaseName}')",
    $configContent);
于 2016-05-14T19:44:23.083 に答える