繁体   English   中英

PHP,getenv()忽略尾随空格

[英]PHP, getenv() ignores trailing space

我在.env文件中有一个带尾随空格的变量(是必需的)。 但是,函数getenv()不会返回带有尾随空格的字符串,而是对其进行修剪。

该变量如下所示:

KEY="blabla. " 

有什么解决方法吗?

为了补充cbaconnier的正确答案,这里有更多信息。 PHP的getenv()函数 不会修剪值:

$ FOO='bar  ' php -r 'echo getenv("FOO") . "EOL";'
bar  EOL

如果项目(或其运行的框架)使用流行的PHP dotenv库从文件中加载环境变量,请注意,该库当前在从文件中加载环境变量值时会修剪它们。 启用此行为配置的请求请求从未合并。

为了更安全地替代str_replace() ,请在值周围使用嵌套引号,然后对引号进行trim()

FOO="'bar  '"
$foo = trim(getenv('FOO'), "'"); 

如果环境变量值包含传递给str_replace()的搜索字符串str_replace()除了值末尾),则该方法避免了破坏环境变量值的风险。

正如我在评论中回答的那样,您可以通过使用不需要的另一个字符来愚蠢地实现该目标,然后替换它:

.env文件:

KEY="blabla.%20" 

config.php文件

$key = str_replace('%20', ' ', getenv('KEY'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM