如何在php中的文本文件中写一个方括号?

时间:2011-06-14 15:12:59

标签: php fwrite square-bracket

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

echo $row\['Value'\];

当我没有逃避括号时,页面失败,当我尝试替换asc(91)时会发生同样的事情。

我见过其他使用代码的例子,比如$ row-> Value,但是我试过了,但是没有用。如果有人可以帮我输出一个方括号,或者知道另一种方法,我可以从一行中取一个值而不使用一个,我会非常感激

4 个答案:

答案 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被解析为换行符,但单引号中的任何内容都被视为字符串并按原样打印,除了\'之外,它应该在输出文件中打印文字单引号。

希望这有帮助。