我正在尝试编写一个php脚本,它将生成各种新的php页面,但我发现我无法写出方括号。当我以与其他字符(即[)相同的方式转义方括号时,将前导\写入新页面,这导致代码无效:
echo $row\['Value'\];
当我没有逃避括号时,页面失败,当我尝试替换asc(91)时会发生同样的事情。
我见过其他使用代码的例子,比如$ row-> Value,但是我试过了,但是没有用。如果有人可以帮我输出一个方括号,或者知道另一种方法,我可以从一行中取一个值而不使用一个,我会非常感激
答案 0 :(得分:3)
您的回显将显示为PHP的数组引用。试试这个:
echo $row, "['Value'];"
假设您希望输出$ row的值,而不是文本文本$row
。如果你想要文字文本,(例如你正在尝试动态构建一个PHP脚本),那么其中任何一个都可以解决这个问题:
echo '$row[\'Value\'];';
echo "\$row['Value'];";
答案 1 :(得分:2)
这个怎么样:
echo sprintf("\$row['%s']", $value); // either scenario
echo sprintf("%s['Value']", $row);
请记住,PHP会自动解析双引号字符串("
),并尝试在其中查找变量。所以,括号可能不是问题,$
变量前缀(加上解析器)可能 。
答案 2 :(得分:1)
还有其他几个答案可行,但我想详细说明:
“echo”构造可以采用变量或字符串。您无法以与执行变量相同的方式将字符串回显到屏幕。例如:echo hello;
不会像您想象的那样表现。您需要将其包含在引号中,例如echo "hello";
您也可以使用单引号。单引号和双引号的行为不同。例如:
$foo = "bar";
echo $foo;
echo "$foo";
echo '$foo';
第一个将回显“bar”,第二个也将回显“bar”,因为PHP在双引号字符串中查找变量。第三个将回显'$ foo',因为PHP不会尝试在单引号字符串中进行变量替换。所以你可以做(如@ mark-b所说):
echo "\$row['Value']";
或
echo '$row[\'Value\']';
现在,您看到的$row->value
语法是对象表示法。假设$row
是一个对象而不是一个数组。对象是另一个球赛。
答案 3 :(得分:1)
你在谈论代码生成的问题,所以我希望你也想在生成的代码中输出'echo'语句。假设您想将输出保存到文件中以便于执行,您希望使用类似fwrite或file_put_contents的东西。你需要用字符串来思考,当你看到代码时,这可能有点棘手。
这样的事情应该有效:
fwrite($fp, 'echo $row[\'Value\'];'."\n");
请注意单引号和双引号的工作原理。 \ n被解析为换行符,但单引号中的任何内容都被视为字符串并按原样打印,除了\'之外,它应该在输出文件中打印文字单引号。
希望这有帮助。