替换php中包含多个特殊字符的数组字符串值

时间:2017-09-01 18:33:47

标签: php arrays

我想将包含多个特殊字符的数组字符串值替换为普通字符值。

Tried Code(数组值):

$data['ENV_TEST'] = "rambo";
$data['ENV_DEV'] = "Project Bribara<"${ENV_TEST}"@gmail.com>"

echo str_replace("${ENV_TEST}", $data['ENV_DEV'], $data['ENV_DEV']);

也尝试了

echo str_replace("\"${ENV_TEST}\"", $data['ENV_DEV'], $data['ENV_DEV']);

预期:

"Project Bribara<rambo@gmail.com>"

实际:

"Project Bribara<"${ENV_TEST}"@gmail.com>"

如何获得预期的输出?

2 个答案:

答案 0 :(得分:1)

PHP中的字符串连接是通过.运算符完成的。你的代码是:

$data['ENV_DEV'] = "Project Bribara<".$data['ENV_TEST']."@gmail.com>"

答案 1 :(得分:1)

你应该在某个时间PHP strings。关于你的问题的双引号字符串的重要部分是你需要在每个$和每个“字符串内部”之前加一个反斜杠。你的代码将如下所示:

$data['ENV_TEST'] = "rambo";
$data['ENV_DEV'] = "Project Bribara<\"\${ENV_TEST}\"@gmail.com>";

echo str_replace("\${ENV_TEST}", $data['ENV_TEST'], $data['ENV_DEV']);
//also tried
echo "\n\n";
echo str_replace("\"\${ENV_TEST}\"", $data['ENV_TEST'], $data['ENV_DEV']);

如果你使用单引号字符串,你不需要转义$(参见手册),而不是\“,你需要转义单引号(但在你的例子中没有)。

$data['ENV_TEST'] = "rambo";
$data['ENV_DEV'] = 'Project Bribara<"${ENV_TEST}"@gmail.com>';

echo str_replace("\${ENV_TEST}", $data['ENV_TEST'], $data['ENV_DEV']);
//also tried
echo "\n\n";
echo str_replace('"${ENV_TEST}"', $data['ENV_TEST'], $data['ENV_DEV']);

我还修复了一个丢失的分号,并在一个地方用TEST替换了DEV。