PHPでCSVファイルを読み込んで表示させようとしています。フォームに件数を入力して、その件数のデータを表示させたいのですが、データ数よりも多い数値を指定するとエラーになるのを回避するために、行数を予め取得したいのですが、やり方がわかりません。教えていただけないでしょうか?
また、フォームに入力した文字が数字かどうかを判断するにはどうしたらいいのでしょうか?
初歩的な質問で申し訳ありませんが、よろしくお願いいたします。
数字かどうかチェックしてエラーにしたい場合は、$num に入っているとして
if(!is_int($num)){ //エラー処理 }
行数をあらかじめ取得するよりも、CSVが終端に達したらループを抜ける、みたいな方が良いと思います。
for($i = 0; $i < $num; $i ++){ if(feof($fp)){ break; } $row = fgetcsv($fp, 4096); //処理 }
行数をあらかじめ取得するには
$aFileData = file(ファイルパス);
$iRowCount = count($aFileData);
で、取得できます。
数字かどうかを判別するには
小数点も数字とするのであれば、
is_numeric()を使います。
マイナスなどの符号は文字としてみるのであれば
if (preg_match('/^[0-9]+$/', 入力された文字) === 0) {
// 数字だけ
} else {
// 数字以外の文字がある
}
とすればよいかと
ありがとうございます!
○○以下を入力してください、といったエラーメッセージを出したかったので、早速試して成功しました。
preg_match も使ってみたいと思います。
助かりました。
ありがとうございます!
forを使って作っていたので、早速試して成功しました。助かりました。