哈希替换为正则表达式不起作用



在此文件中,我想用另一个更改uster_construction_hash哈希,我以正则表达方式做到这一点。

文件:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
UNDER_CONSTRUCTION_HASH=y$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2

我想用另一个替换UNDER_CONSTRUCTION_HASH

$2y$10$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2

我的代码看起来像这样:

$envContent = $this->filesystem->get($envPath);
$regex = '/UNDER_CONSTRUCTION_HASH=[^s]+/';
$newLine = sprintf('UNDER_CONSTRUCTION_HASH=%s', $hash);
if (preg_match($regex, $envContent)) {
    var_dump($newLine);
    $envContent = preg_replace($regex, $newLine, $envContent);
} else {
    $envContent .= "n".$newLine."n";
}

结果是:

UNDER_CONSTRUCTION_HASH=y$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2

而不是这样:

UNDER_CONSTRUCTION_HASH=$2y$10$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2

这里可能是什么问题?

我的软件包:https://github.com/larsjanssen6/underconstruction

这是逃脱美元标志的问题。

$hash注入$newLine并用作preg_replace()的替换参数时,该函数假设$2$1是捕获组引用。您将需要将斜线停在他们面前才能对其进行字面处理。

这是重写:

代码:(演示(

$envContent='MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
UNDER_CONSTRUCTION_HASH=y$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2';
$hash = '$2y$10$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2';
$pattern = '/UNDER_CONSTRUCTION_HASH=S+/';
$replace = "UNDER_CONSTRUCTION_HASH=".str_replace('$','$',$hash);  // <-- escape your dollar signs
$newLine = "UNDER_CONSTRUCTION_HASH=$hash";
$envContent = preg_replace($pattern, $replace, $envContent, -1, $count);
if(!$count){
    //echo "no replacement maden";
    $envContent .= "n".$newLine."n";
}
echo $envContent;

输出:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
UNDER_CONSTRUCTION_HASH=$2y$10$TwrFXK90UkJ4pq4grH1/hevPgkdOE4lEmPI9QbhVnwH1UEyYr/zA2

相关内容

最新更新