1

さまざまな新しいphpページを生成するphpスクリプトを作成しようとしていますが、角かっこを書き込めないことがわかりました。他の文字(つまり[)と同じ方法で角かっこをエスケープすると、先頭の\が新しいページに書き込まれ、コードが機能しなくなります。

echo $row\['Value'\];

角かっこをエスケープしないと、ページが失敗し、asc(91)に置き換えても同じことが起こります。

$ row-> Valueのようなコードを使用する他の例を見たことがありますが、それを試しましたが、機能しませんでした。角かっこを出力するのを手伝ってくれる人や、行をまったく使用せずに行から値を取得できる別の方法を知っている人がいれば、とてもありがたいです。

4

4 に答える 4

3

エコーは、PHPへの配列参照として表示されます。これを試して:

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

リテラルテキストではなく、$rowの値を出力する必要があると仮定します$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

うまくいく答えは他にもいくつかありますが、詳しく説明したいと思います。

「echo」構造は、変数または文字列を取ることができます。変数を実行するのと同じ方法で、文字列を画面にエコーすることはできません。例:echo hello;あなたが思うかもしれないように振る舞わないでしょう。次のような引用符に含める必要がありますecho "hello";

一重引用符を使用することもできます。一重引用符と二重引用符の動作は異なります。例えば:

$foo = "bar";
echo $foo;
echo "$foo";
echo '$foo';

PHPは二重引用符で囲まれた文字列で変数を検索するため、1つ目は「bar」をエコーし​​、2つ目も「bar」をエコーし​​ます。PHPは一重引用符で囲まれた文字列で変数置換を行おうとしないため、3番目は「$foo」をエコーし​​ます。だからあなたはすることができます(@ mark-bが言ったように):

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

また

echo '$row[\'Value\']';

さて、$row->valueあなたが見たその構文は、オブジェクト表記法です。$rowはオブジェクトであり、配列ではないと想定しています。オブジェクトはまったく別のボールゲームです。

于 2011-06-14T15:29:31.353 に答える
1

あなたはあなたの質問でコード生成について話しているので、生成されたコードに「echo」ステートメントも出力したいと思います。簡単に実行できるように出力をファイルに保存したい場合は、fwriteやfile_put_contentsなどを使用する必要があります。文字列の観点から考える必要がありますが、コードを見ているときは少し注意が必要です。

このようなものが機能するはずです:

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

一重引用符と二重引用符がどのように機能するかに注意してください。\ nは改行に解決されますが、一重引用符で囲まれたものはすべて文字列として扱われ、出力ファイルにリテラルの一重引用符を出力する\'を除いて、そのまま出力されます。

お役に立てれば。

于 2011-06-14T15:57:09.510 に答える