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

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

strposでEmptyのエラーが。引数には何を?

PHPのプログラムを書いているのですが、以下のエラーが出てしまい困っています。 Warning: strpos() [function.strpos]: Empty delimiter in /xxx/hoge.php on line 22 22行目には以下のコードがあります。 if( strpos( $v['email'] , $record ) !== false ){ $record にはこちらです。 $record = trim( fgets( $r_fp , 1024 ) ); 調べてみますと、strposの$recordの引数が空?のためのエラーではないかという記事があったのですが、この場合には何を入れればよいのでしょうか?引数に何かを定義しないとだめですか? ちなみに、これは重複アドレスを弾く記述を行っている一部となります。 何かアドバイスありましたらお願いいたします。 宜しくお願いします!m(_ _)m

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
  • 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

  • Warning: mb_strpos() [function.mb-strpos]: Empty delimiterが出力される原因がわかりません。

    Warning: mb_strpos() [function.mb-strpos]: Empty delimiter が出力される原因がわかりません。 mb_strposの引数は、以下の2つ(1)、(2)です。 (1)csvファイルから読み出された1つのレコードの特定のフィールドの内容 (2)「所定の文字列」 症状としては、このWarningは、 どうも、csvファイルのレコードに「所定の文字列」を含むものが ない場合に出力されるようです。 このWarningが出力される原因を解消する方法を教えて頂くか、 上記の場合、このWarningがどうしても出力されるものである場合には、Warningの出力を回避する方法を教えて頂きたく、 どうかよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPのエラーの意味【strstr() Empty deli】

    PHP Warning: strstr() [<a href='function.strstr'>function.strstr</a>]: Empty delimiter in /home/xxx/ on line 384 というエラーが出ます。 一体どういう意味なのでしょうか? たまに出るのですが、 調べても明快な答えはわかりませんでした。 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • splitのREG_EMPTYというエラー

    wordpressにて、tanzakuというテーマを利用しようとしているのですが 「Warning: split() [function.split]: REG_EMPTY 」という PHPのエラーが出てしまい、困っています。 fanctions.phpのline69と書いてあったので、該当箇所を見てみると $split_url = split($mark, $img_url); となっていました。 これのせいなのか、表示されるべき画像も表示されません。 これはどのように直せば良いのでしょうか? 解決法をご存じの方、ぜひご教授下さい。

    • ベストアンサー
    • PHP
  • fgetsでエラー

     C言語を勉強しているものです。 fgetsやfscanfで第一引数にダブルポインタ変数を用いるとエラーが出ます。 なぜそうなるんでしょうか? ダブルポインタだと不可能なんでしょうか? char **moji; FILE *fp; moji = (char**)malloc(sizeof(char*) * 128 * 256); fp = fopen("test.txt","r+"); fgets(moji[0], 26, fp); //ここでエラー mojiを[0]で指定してあげてもエラーなんでしょうか? fgetsだけでなくfscanfでもそうです。 どうしてそうなんるんでしょう?

  • PHPエラーについて教えてください

    PHPエラーについて教えてください GD関数のエラーだと思います。 サーバを移動したら以下のようなエラーが出ました。 どのようなエラーになるのでしょうか。 Warning: imagesx(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagesy(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagecopyresized(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 99 Warning: imagejpeg(): supplied argument is not a valid Image resource in /home/sites/heteml/xxx/xxx.php on line 100

    • ベストアンサー
    • PHP
  • 引数エラーについて

    下記Javascriptに引数(s1=10,s2=12345)を与えるとうまく動作するのですが 引数(s1=1A,s2=12345)を与えた場合は 「エラー:')'がありません。」とエラーになります。 文法的にどこかがおかしいのだと思うのですが・・・どこがおかしいんでしょうか? よろしくお願いします。 <SCRIPT type="text/JavaScript"> <!-- function new_Window(s1,s2) { var sa=s1; var sb='&s2=' + s2; var uri="hoge.php?s1="; var url = uri.concat(sa, sb); wnd = open( url ,"newwindow","scrollbars=yes","width=900","height=500"); } //--> </script>

  • 単純なクエリーなのにSELECTしてもEmpty

    | Field  | Type | Null | Key | Default | Extra | +-----------------+--------------+------+-----+---------+----------------+ | page_id | int(10) | NO | PRI | NULL | auto_increment | | site   | varchar(255) | YES | MUL | NULL | | ... ... ... このようなテーブルがあり、以下の様なSELECT文を発行してもEmptyとなってしまいます。 > SELECT `page_id` FROM `table` WHERE `site` = 'hoge'; 自分なりに色々と調べてみたところ、 > UPDATE `table` SET `site` = 'fuga' WHERE `page_id` = 1; > SELECT `page_id` FROM `table` WHERE `site` = 'fuga'; とするとちゃんと1件返ってきます。 ですが、また > UPDATE `table` SET `site` = 'hoge' WHERE `page_id` = 1; > SELECT `page_id` FROM `table` WHERE `site` = 'hoge'; とするとEmptyとなってしまいます。 どうやら、INSERTしたレコードをWHERE `site` = 'hoge'するとEmptyとなるような気がします。 何度も試したので、単純に`site` = 'hoge'の文字列自体が間違っている、などのことは無いはずです。 以下の点も合わせて、どのような原因が考えられるでしょうか。 ・レコードのINSERTは、クローラーによって行われていています。 ・他のフィールドは通常通りSELECTすることができます。 ・ストレージエンジンはmroongaです。 どなたか解決策がわかる方いらっしゃいましたら、ご回答頂ければ幸いです。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • PHPのエラーを無視したい

    phpで以下のエラーが出ます。 原因は初期値の関連の問題のようですが、この警告が出ないようにする方法を教えてください。 Warning: Creating default object from empty value

    • ベストアンサー
    • PHP
  • PHPでFilename cannot be empty他の警告(Wa

    PHPでFilename cannot be empty他の警告(Warning)発生しています。 PHP初心者です。 テンプレートを使ってファイルを作成する機能をつくりました。 一応動いているようなのですが、実行するとWarningが発生します。 解消する方法をご存知でしたらご教授ください。 オブジェクト指向で組んでみたので、それが原因かもと思うのですが、解消 策がわからず困っています。 よろしくお願いします。 ◆警告メッセージ Warning: fopen(): Filename cannot be empty in C:\path\CreateFile.php on line 31 Warning: fwrite() expects parameter 1 to be resource, boolean given in C:\path\CreateFile.php on line 32 Warning: fclose() expects parameter 1 to be resource, boolean given in C:\path\CreateFile.php on line 33 以下サンプルコードです。 ◆クラスファイル <?php class CreateFile { // テンプレートファイル名 public $templateFile; // 保存ファイル名 public $createdFile; // 置換キーワードセット arrayで指定 public $values; // ファイル生成 public function createFile() { // ファイルを生成する $data = ""; if($this->templateFile){ $data = file_get_contents($this->templateFile); } if (is_array($this->values)) { foreach ($this->values as $key => $val) { $data = str_replace($key, $val, $data); } } // ファイルを生成する $fp = fopen($this->createdFile, 'w'); fwrite($fp, $data); fclose($fp); } } ?> ◆メイン <?php require_once './class/CreateFile.php'; // インスタンス生成 $cdFile = new CreateFile(); // テンプレート名設定 $cdFile->templateFile = './template.tpl'; // 保存ファイル名設定 $cdFile->createdFile = './hoge.txt'; $cdFile->values = array('<%VALUE>' => 'テストです'); $cdFile->createFile(); echo '++++++++++ End CreateFile ++++++++++'; ?>

    • ベストアンサー
    • PHP
  • 引数のある関数と引数のない関数の設定

     お世話になっております。 PHPのプログラミングで関数をつくる際に、引数を渡す関数と引数がない関数がありますが、すでに定義済みの関数のように、引数がある場合と引数がない場合の両方を取り扱うにはどうしたらよいでしょうか? function example ($a) { if ($a == 0 || $a == '') { print '引数なし'; } else { print $a; } } のような関数で、 example(); という感じで引数を入れないと、 Warning: Missing argument … というエラーがでてしまいます。関数を example(''); と呼び出すと大丈夫なのですが。。。 プログラマーにとって基本的なことだと思うのですが、調べてもなかなか出てこないので質問させて頂きました。どなたかわかる方がいたらしたらおしえてください。 よろしくお願いします! }

    • ベストアンサー
    • PHP

専門家に質問してみよう