2011-06-14 7 views
1

私は、さまざまな新しいPHPページを生成するPHPスクリプトを作成しようとしていますが、私は角カッコを書くことができません。私は他の文字(すなわち[)と同じように角括弧をエスケープする場合有数\は仕事をdoesntのコードになり、新しいページに書かれている:私はブラケットをエスケープしていない場合はPHPでテキストファイルに角括弧を書くにはどうしたらいいですか?

echo $row\['Value'\]; 

、ページは失敗し、同じことが私がasc(91)を試して代用すると起こります。

$ row-> Valueのようなコードを使用する他の例を見ましたが、私はそれを試みましたが、うまくいきませんでした。誰かが角括弧を出力するのを助けることができるか、まったく使用しないで行から値を取得できる別の方法を知っていれば、私は非常に感謝しています。

答えて

3

あなたのエコーは、 PHP。これを試してみてください:

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

リテラルテキスト$rowをあなたは$行の値が出力されるようにしたいと仮定し、そしてません。

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

:このことについてどのように

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

最後は素晴らしいものでした。 –

2

:あなたはリテラルテキスト、(例えば、あなたがその場でPHPスクリプトを構築しようとしている)をしたい場合は、これらのいずれかは、トリックを行う必要がありますPHPは自動的に二重引用符の文字列(")を解析し、内部で変数を検索しようとします。そのため、括弧は、おそらくではありません。$という可変接頭辞(パーサと結合された)がおそらくです。

1

は仕事カップル他の回答がありますが、私は詳しく説明したい:

「エコー」構築物は、変数または文字列を取ることができます。変数と同じ方法で文字列を画面にエコーすることはできません。たとえば、echo hello;は、考えられるように動作しません。 echo "hello";

などの引用符で囲む必要があります。一重引用符も使用できます。一重引用符と二重引用符は異なる動作をします。例:

PHPは二重引用符文字列で変数を検索するため、最初の行は "bar"を返し、2番目の行は "bar"をエコーし​​ます。 PHPは一重引用符で囲まれた文字列に変数置換を行わないので、3番目の行は '$ foo'をエコーし​​ます。

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

または

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

、あなたが見た$row->value構文は、オブジェクトの表記法であること:(@マーク-bが言ったように)だからあなたが行うことができます。 $rowはオブジェクトであり、配列ではないと仮定しています。オブジェクトは他のすべての野球ゲームです。

1

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

何か作業をする必要があります:単一引用符と二重引用符がどのように機能するか

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

注意を。 \ nは改行で解決されますが、一重引用符で囲まれたものは文字列として扱われ、\ 'とは別にそのまま出力され、出力ファイルにリテラルの一重引用符が出力されます。

これが役に立ちます。