想象一下,我们有一个包含多个$
符号的变量:
$variable="$xtttt$yddd$hhh"
当我回显变量时,我得到以下内容:
ttttdddhh
发生这种情况是因为它将$ X,$ y和$ h作为空变量处理,我知道我可以通过转义每个$
符号来解决这个问题:
$variable="\$xtttt\$yddd\$hhh"
但问题是我不知道$
标志的数量
注意:这也发生在shell脚本
上我该如何解决?
答案 0 :(得分:1)
只需用\ $替换所有$符号即可将其取消
<?php
$newValue = str_replace("$", "\$" ,$variable);
echo $newValue;
?>
答案 1 :(得分:0)
PHP只会尝试解析使用&#34;双引号&#34;定义的字符串中的变量,但如果它们是使用单引号定义的话,则不会。#/ p>
这是避免额外连接的有用提示。以下示例提供相同的输出。
$foo = $var . ' something ' . $etc;
$foo = "$var something $etc";
您还可以解析数组值和对象属性,
$foo = "Something: {$array['key']}";
$foo = "Something: {$object->property}";
答案 2 :(得分:0)
你可以执行一个简单的str_replace:
$Var = str_replace("$","\$",$var");
甚至更简单。将引号从double("
)更改为single('
)。这将迫使PHP将值文本读取为纯文本,然后将其解析到shell中并进行正确验证。所以:
$Var = "$xdjdjj$vvsso$vvvk";
可以改为:
$Var = '$xdjdjj$vvsso$vvvk';
答案 3 :(得分:0)
简单地使用单引号(当然,如果变量内容的来源允许它)。见这个例子:
$variable="$xtttt$yddd$hhh"; // reports missing vars
$variable2='$xtttt$yddd$hhh'; // works just fine
echo $variable, "\n", $variable2;