重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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);
/////////////////////////////////////////////////////////////

以上、よろしくお願い致します。

A 回答 (2件)

$dn_in = $page1_to[1];


セミコロンが大文字になっている。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。

>セミコロンが大文字になっている。
悲しいことに、これが原因でした。

ここを半角に修正したところ、きちんと動作しました。

あ~、情けないです。 半日も停滞してました。トホホ。。。

回答をして頂いたお二方、本当にありがとうございました。

お礼日時:2013/05/20 01:12

print "$page1_to[1]";





print "{$page1_to[1]}";


配列の要素等を変数展開させたいときはブレス記号でくくらないとパースエラーになります。
というか変数展開をするときは原則全てブレスでくくった方が見やすいし、PHPの実行速度も僅かですが速くなるのでそうすべきです。

というかこれ変数展開させるまでもないですね。

print $page1_to[1];

で十分。


私ならfile_get_contents関数で一気に読みこんで、そこからpreg_match_allで一気に抽出して、こう書きますかねぇ・・・
http://ideone.com/kKPeTG
    • good
    • 0
この回答へのお礼

早速のご連絡、ありがとうございました。

ところで、エラーになっている行は、ご連絡頂いた行の一つ上なのですが、
同様の"{"で、代入出来るということでしょうか?

とりあえず、

$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難しいです。

お礼日時:2013/05/20 00:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!