すみません、超初心者の質問です。
今、エクセルのデータをphpを介してJsonに入れるプログラミングに取り組んでいます。
エクセル
↓
CSV
↓
配列(php)
↓
Json
しかしこのcsvのデータを配列に入れる前に置換しなければならない箇所(具体的には、言葉で入っている文字をコード化したい箇所)が沢山あるのですが、phpで読み込んだcsvデータの文字列を置換する方法はありますか??(置換箇所は多岐に渡ります)
外部から毎月買い取るデータで、いちいちエクセル上で手動で置換するのではなく、PHP上で自動的に置換したいのです。。
愚問ですみません、、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
'あああ'=>1
'いいい'=>2
'ううう'=>3
というように文字列を数字などのIDみたいに変換したいということでしょうか?
ソレであった場合、IDの含まれる一覧もCSVかなんかで渡すということでしょうか?
毎回のデータ総数が恐ろしい量である、ということではないのであれば、
配列に入れてから処理したほうがやりやすいと思いますがいかがでしょうか。
実際、質問者さんがどのようなロジックで処理するのかが見えないのであれなんですが、
<?php
$replace = array('あ'=>1, 'い'=>2, 'う'=>3);//言葉に対応するコードの連想配列
$result = array();
$fp = fopen('CSVのデータ', 'r');
if(!$fp) exit('開けない');
$line = fgets($fp, 4096);//改行までの1行を取得
$line = rtirm($line); //取得した文字列の最後に改行コードがくっつくのでソレを除去
$line_arr = explode(',', $line); //カンマで文字列を切り分け配列に。
//ここで、もし言葉が記述されているのが2番目(配列のインデックスでいう1)の場合
if(isset($replace[$line_arr[1]])){
$line_arr[1] = $replace[$line_arr[1]];
}
$result[] = $line_arr; //又はarray_push($result, $line_arr);
fclose($fp);
?>
こんな感じでいかがですか?
丁寧なご回答ありがとうございました!
コードを配列に入れるとスマートにいくのですね!なるほどです!
無事解決いたしました。ありがとうございます!!
No.1
- 回答日時:
mb_convert_encoding とかでもいいんじゃないの?
今日は、csvからdnsサーバのゾーンを編集するものを書いてましたが、日本語のコーディングを考えるのは面倒なので、行ごとにmb_convert_encoding で変換しましたね。
わかっているとは思いますが変換するなら配列に入れる前ですよ。
csvのカラム毎に違う漢字コードを使うような変なものでもない限り、ファイル全体か、処理の都合上なら行単位で変換の方が楽です。
丁寧なご回答ありがとうございました!
私の説明が足りず違う内容のお答えを頂きましたが、その後Jsonで文字化け問題が発生したためathanasiusさんのご回答も大変役に立ちました!
ありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
$_SESSIONに二次元配列を使える...
-
SimpleXML関数で取得したXML要...
-
PHPで配列をPOSTデータで送った...
-
file_existsでファイル名の部分...
-
配列をループでたくさん宣言し...
-
join関数について
-
array_combineがうまくいかない...
-
変数の一致条件がたくさんある...
-
pdfファイルの複数添付 引数の型
-
NGワード設定もしくはテキス...
-
別ファイルの構造体の値を読み...
-
Resource id #3 と表示されま...
-
sqlのデーターを『あ行』『か行...
-
file_get_contents()にて文字化け
-
添え字が全て文字列のPHPの多次...
-
一致しないデータも表示させたい
-
phpでcsvを読み込むときのdata...
-
数独かを判断するプログラム
-
STLのvectorで作った配列をメン...
-
C言語の配列をPush(追加)する...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列をループでたくさん宣言し...
-
$_SESSIONに二次元配列を使える...
-
String だと「 ByRef引数の型が...
-
file_existsでファイル名の部分...
-
漢字のソートについて
-
PHPのカッコ[ ]の使い方について
-
ネストが深い時のforeachはどう...
-
foreachのなかで次のキーを参照...
-
チェックボックス複数選択 mys...
-
配列一致(要素順番は違うが内容...
-
PHPにてクラスを配列にすること...
-
postgresql関数をつかったレコ...
-
PHP 配列の添字に変数は使えない?
-
PHP掲示板で新着順に表示させた...
-
URLのサブドメインとドメイン部...
-
SESSION変数の2次元配列
-
$_POSTを一括してサニタイズし...
-
PHPで配列をPOSTデータで送った...
-
Smartyを使って、テーブルを表示
-
【Smarty】foreach関数やsectio...
おすすめ情報