1

我正在尝试编写一个 php 脚本来生成各种新的 php 页面,但我发现我无法写出方括号。当我以与其他字符(即 [ )相同的方式转义方括号时,前导 \ 被写入新页面,这导致代码不起作用:

echo $row\['Value'\];

当我不转义括号时,页面会失败,当我尝试替换 asc(91) 时也会发生同样的事情。

我见过其他使用 $row->Value 之类的代码的示例,但我尝试过,但没有成功。如果有人可以帮助我输出方括号,或者知道另一种方法,我可以通过这种方法从一行中获取一个值而不使用一个,我将非常感激

4

4 回答 4

3

您的 echo 将显示为对 PHP 的数组引用。尝试这个:

echo $row, "['Value'];"

假设您希望输出 $row 的值,而不是文字 text $row。如果您想要文字文本(例如,您正在尝试动态构建 PHP 脚本),那么其中任何一个都应该可以解决问题:

echo '$row[\'Value\'];';
echo "\$row['Value'];";
于 2011-06-14T15:16:02.863 回答
2

这个怎么样:

echo sprintf("\$row['%s']", $value);  // either scenario
echo sprintf("%s['Value']", $row);  

请记住,PHP 会自动解析双引号字符串 ( "),并尝试在其中查找变量。所以,括号可能不是问题,$变量前缀(加上解析器)可能.

于 2011-06-14T15:16:28.283 回答
1

您在您的问题中谈论代码生成,所以我希望您还想在生成的代码中输出“回声”语句。假设您想将输出保存到文件中以便可以轻松执行,我希望您想使用 fwrite 或 file_put_contents 之类的东西。你需要从字符串的角度来考虑,当你看到代码时这可能会有点棘手。

像这样的东西应该工作:

fwrite($fp, 'echo $row[\'Value\'];'."\n");

注意单引号和双引号是如何工作的。\n 被解析为换行符,但单引号中的任何内容都被视为字符串并按原样打印,除了 \',它应该在输出文件中打印文字单引号。

希望这可以帮助。

于 2011-06-14T15:57:09.510 回答
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是一个对象而不是数组。对象是另一回事。

于 2011-06-14T15:29:31.353 回答