• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:strposでEmptyのエラーが。引数には何を?)

strposでEmptyのエラーが発生。引数には何を入れるべき?

このQ&Aのポイント
  • PHPプログラムでstrpos関数を使用していますが、Empty delimiterのエラーが発生しています。具体的には、$record引数が空というエラーです。
  • 引数には何かを定義しなければならないのでしょうか?このエラーを解決する方法を教えてください。
  • エラーメッセージを調べた結果、$record引数が空であることが原因の一つである可能性があります。しかし、具体的にどのような値を引数に入れるべきかわかりません。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • agunuz
  • ベストアンサー率65% (288/438)
回答No.2

一般的にfeofでのチェックではタイミングが「遅い」です。下記のスクリプトで試してください。 <?php $r_fp = fopen( "hoge.txt" , "r" ); $ct = 0; if( $r_fp ){ while( !feof( $r_fp ) ){ $row = fgets( $r_fp , 1024 ); if ($row === false) { print ++$ct . ':false<br>'; } else { print ++$ct . ':' . $row . '<br>'; } } fclose( $r_fp ); } print 'End'; hoge.txtの最後の行が「改行なし」でEOFがあればいいですが、そうでなければ false の表示が出てくるハズです。つまり「(前の行を改行まで読んで)次行を読もうとしたら EOF だった」というケースには対応出来ません。 どちらのケースにも対応するには while ($row = fgets( $r_fp )) { // $row の処理 } としてください。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • agunuz
  • ベストアンサー率65% (288/438)
回答No.1

>$record = trim( fgets( $r_fp , 1024 ) ); まさか、fgetの戻り値が false の場合にも処理しているなんてことはありませんよね?普通は while ($row = fgets($r_fp)) { $record = trim($row);  :  : } のように書くと思いますが・・・

yuyukina
質問者

お礼

有難う御座います! すみません、少し整理した内容を追記させていただきます。 何が問題なのでしょうか…。 $r_fp = fopen( "hoge.txt" , "r" ); if( $r_fp ){ while( !feof( $r_fp ) ){ $record = trim( fgets( $r_fp , 1024 ) ); if( strpos( $v['email'] , $record ) !== false ){ $max = -1; break; } } fclose( $r_fp ); } if( $max == -1 ) error_page("<p>".$v['email']."は重複です。</p>" );

すると、全ての回答が全文表示されます。

関連するQ&A