Skip to content

Commit fa9d523

Browse files
C0DE8GrahamCampbell
authored andcommitted
Support nested variable regex (#250)
1 parent 849d8a1 commit fa9d523

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

src/Loader.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ protected function resolveNestedVariables($value)
272272
if (strpos($value, '$') !== false) {
273273
$loader = $this;
274274
$value = preg_replace_callback(
275-
'/\${([a-zA-Z0-9_]+)}/',
275+
'/\${([a-zA-Z0-9_.]+)}/',
276276
function ($matchedPatterns) use ($loader) {
277277
$nestedVariable = $loader->getEnvironmentVariable($matchedPatterns[1]);
278278
if ($nestedVariable === null) {

tests/Dotenv/DotenvTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,8 @@ public function testDotenvNestedEnvironmentVars()
139139
$this->assertSame('{$NVAR1} {$NVAR2}', $_ENV['NVAR3']); // not resolved
140140
$this->assertSame('Hello World!', $_ENV['NVAR4']);
141141
$this->assertSame('$NVAR1 {NVAR2}', $_ENV['NVAR5']); // not resolved
142+
$this->assertSame('Special Value', $_ENV['N.VAR6']); // new '.' (dot) in var name
143+
$this->assertSame('Special Value', $_ENV['NVAR7']); // nested '.' (dot) variable
142144
}
143145

144146
/**

tests/fixtures/env/nested.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,5 @@ NVAR2="World!"
33
NVAR3="{$NVAR1} {$NVAR2}"
44
NVAR4="${NVAR1} ${NVAR2}"
55
NVAR5="$NVAR1 {NVAR2}"
6+
N.VAR6="Special Value"
7+
NVAR7="${N.VAR6}"

0 commit comments

Comments
 (0)