01: <?php
02:
03: $data = "
04:
05: <html>
06: <head>
07: <title>タイトル</title>
08: </head>
09:
10: <body>
11:
12: <?php
13: $arr = file(\"testfile/test.txt\");
14: mt_srand((double)microtime()*1000000);
15: print $arr[mt_rand(0,count($arr)-1)];
16:
17: ?>
18:
19: </body>
20: </html>
21:
22: ";
23:
24: for($i = 0; $i < 10; $i ++){
25: $fp = fopen("$i.php", "w");
26: fwrite($fp, $data);
27: fclose($fp);
28: }
29:
30: for($i = 0; $i < 10; $i++){
31: echo "<a href=\"./$i.php\">$i</a>\r";
32: }
33: ?>
34:
「<?php」 はphpスクリプトの開始タグ、「?>」 は終了タグですよね。それで、
phpスクリプト文の中に書いた <?php、?> はphpタグではなく、単なる文字列です。
あなたの質問文は、
01行目 <?php で、ここから phpスクリプト開始、
03行目 $data = " で、4行目から、
22行目 "; で、21行目までの文字列を 変数$dataに代入する。ということになります。
この場合、4~21行の文字列中の変数は展開されますから、15行目の $arr を \$arr とエスケープしないとエラーになります。
シングルクォートで括ると変数の展開はしませんから、3行目、22行目をシングルクォートにすればエスケープの必要はありません。
お礼
ありがとうございます! 大変助かりました。 シングルクォートにすればエスケープする必要もないのですね。 ありがとうございました。