ここから本文です

2人以上のユーザーに関するデータをcsvファイルに書き込み保存

nec********さん

2014/1/722:04:26

2人以上のユーザーに関するデータをcsvファイルに書き込み保存

2人以上のユーザーのツイートから取得したひらがな、漢字の個数と文字列の長さをcsvファイルに書き込み保存するためのスクリプトを実装しようとしています。csvファイルに1人目のひらがな、漢字の個数と文字列の長さを書き込み、改行してから2人目のひらがな、漢字の個数と文字列の長さを書き込めるように実装したいです。実装していたら下記のエラーが発生してしまいました。

<br />
<b>Warning</b>: preg_match_all(): Compilation failed: invalid UTF-8 string at offset 5 in <b>C:\xampp\htdocs\twittercount.php</b> on line <b>41</b><br />
<br />
<b>Warning</b>: fputcsv() expects parameter 2 to be array, boolean given in <b>C:\xampp\htdocs\twittercount.php</b> on line <b>26</b><br />

調べたところ、Compilation failed: invalid UTF-8 string at offset 5 inはUTF-8として保存されていないことが原因のようです。 どのように修正すれば2つのエラーが解消し、目的とするスクリプトを実装できるのでしょうか?分からず行き詰っています。ご協力お願いします。

スクリプトの内容は文字数制限の関係で書き込めませんでした。下記のURLにアップロードしました。

http://www.dotup.org/uploda/www.dotup.org4791237.zip.html

補足Array to string conversion in <b>C:\xampp\htdocs\twittercount.php</b> on line <b>88</b><br />というエラーが出たため、

$data = array();
$data2= array();
$data3= array();
$data[]=$c['hiragana'];
$data2[]=$c['kanji'];
$data3[]=mb_strlen($text, 'UTF-8');
fputcsv($fp, $data);
fputcsv($fp, $data2);
fputcsv($fp, $data3);
と修正し、1列に2つ分しか値が出力されません。どのように修正したらいいでしょうか?

閲覧数:
260
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

ryo********さん

編集あり2014/1/1019:01:16

>> 調べたところ、Compilation failed: invalid UTF-8 string at offset 5 inはUTF-8として保存されていないことが原因のようです。

ファイルを開いてみたところ、twittercount.phpはファイル中に日本語が登場しているにもかかわらず、CP932(Shift_JIS)として保存されていました。これをUTF-8として正しく保存すれば解決です。Windowsメモ帳だとUTF-8(BOM有り)しか選択できなくてセッションやヘッダーが絡んできたときに不都合が多いので、UTF-8(BOM無し)で保存できるエディタを使ってください。

>> //2つ目の引数が配列でないことが原因でエラーが発生?
>> fputcsv($fp, $b,$a);

何度も言いますが・・・適当に憶測でコードを書くのではなく、マニュアルを見てそれに則った関数の使い方をしてください・・・これで質問されても「マニュアル読め」としか言えません・・・

fputcsv
http://php.net/manual/ja/function.fputcsv.php

配列じゃないのはcount_chars_utf8関数がFALSEを返しているからです。結局それはpreg_match_all関数が実行に失敗していることと直結します。

【サンプル】
http://pastebin.com/ugrpmPR8


【補足】

ごめんなさい、foreachで回すのをうっかり忘れていました…
どうせなら最初からファイルオープンして直接書き込んでいった方が良さげなので仕様を変えます。
http://pastebin.com/nracStYc

この回答は投票によってベストアンサーに選ばれました!

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる