• 締切済み

PHP 文字列を代入した配列を変数に代入出来ない

PHPは超初心者です。 本を2冊とインターネットで勉強し、コーディングを開始したところ、 理由がわからないエラーに遭遇し、身動きがとれません。 Parse error: syntax error, unexpected T_STRING in ************* on line 102 単に代入でのエラーなので、基本的な事なのかな? と感じておりますが、 どれだけ調べても解決できません。 ご教示いただけたら幸いです。 ■内容 ・サーバー上のテキストファイル($df)を1行ずつ読み出し、”:”コロンで分割しています。  分割された1カラム目が、”dname”であれば、2カラム目の内容を変数”$dn_in”に代入し、  後でその内容を使ってデータ処理をしたいところ、シンタックスエラーで止まってしまいます。 因みに、問題の行をコメントアウトして、printで確認してみると、ちゃんと分割されて、 ターゲットの2カラム目の内容が表示されます。 また、後のデータ処理とは、ファイルクローズ後に別ファイルの文字列変換に利用する為、 その処理まで対象の文字列を確保しておくつもりです。 ///////////////////////////////////////////////////////////// $fp2 = fopen($df,'r'); if($fp2){ while(!feof($fp2)){ $page1_from = fgets($fp2); $string1 = ":"; //下は全角のコロンで分割 $page1_to = explode(":", $page1_from);   if(preg_match('/dname/',$page1_to[0])) { $dn_in = $page1_to[1];   // ←この行でエラー print "$page1_to[1]"; print "$dn_in"; } } } fclose($fp2); ///////////////////////////////////////////////////////////// 以上、よろしくお願い致します。

みんなの回答

回答No.2

$dn_in = $page1_to[1]; セミコロンが大文字になっている。

momochi223
質問者

お礼

早速のご回答、ありがとうございました。 >セミコロンが大文字になっている。 悲しいことに、これが原因でした。 ここを半角に修正したところ、きちんと動作しました。 あ~、情けないです。 半日も停滞してました。トホホ。。。 回答をして頂いたお二方、本当にありがとうございました。

noname#244856
noname#244856
回答No.1

print "$page1_to[1]"; ↓ print "{$page1_to[1]}"; 配列の要素等を変数展開させたいときはブレス記号でくくらないとパースエラーになります。 というか変数展開をするときは原則全てブレスでくくった方が見やすいし、PHPの実行速度も僅かですが速くなるのでそうすべきです。 というかこれ変数展開させるまでもないですね。 print $page1_to[1]; で十分。 私ならfile_get_contents関数で一気に読みこんで、そこからpreg_match_allで一気に抽出して、こう書きますかねぇ・・・ http://ideone.com/kKPeTG

momochi223
質問者

お礼

早速のご連絡、ありがとうございました。 ところで、エラーになっている行は、ご連絡頂いた行の一つ上なのですが、 同様の"{"で、代入出来るということでしょうか? とりあえず、 $dn_in = {$page1_to[1]}; としてみましたが、 Parse error: syntax error, unexpected '{' in ********************** on line 102 となってしまいました。 また、http://ideone.com/kKPeTG のように、 file_get_contents関数で一気に読みこんで、そこからpreg_match_allで・・・・ を行ってみると、エラーはなくなりましたが、 print_r($matches[1]); があるにもかかわらず、何も表示されませんでした。? んん~、PHP難しいです。

関連するQ&A