質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

704閲覧

PHPにて、CSVファイルを読み込み、その中から漢字の単語を検索する方法

oit1234

総合スコア17

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2018/10/10 07:50

編集2018/10/10 08:15

前提・実現したいこと

PHPでCSVファイルを読み込み、そのCSVファイルの中から名詞という単語が入っている行のみを検索して取り出したいです。

発生している問題・エラーメッセージ

CSVファイルの中身は

出現順,基本形,読み,分類,頻度,%,変化形,語彙レベル,語彙レベル
1,吾輩,ワガハイ,代名詞,2,0.68,吾輩 (2),,
2,は,ハ,助詞-係助詞,9,3.05,は (9),
,
3,猫,ネコ,名詞-普通名詞-一般,2,0.68,猫 (2),1,初級前半
4,だ,ダ,助動詞,13,4.41,"で (6), だ (4), な (2), に (1)",,
5,ある,アル,動詞-非自立可能,4,1.36,ある (4),1,初級前半
6,。,"",補助記号-句点,17,5.76,。 (17),
,
7,名前,ナマエ,名詞-普通名詞-一般,1,0.34,名前 (1),1,初級前半
8,まだ,マダ,副詞,1,0.34,まだ (1),2,初級後半
9,無い,ナイ,形容詞-非自立可能,1,0.34,無い (1),,
10,どこ,ドコ,代名詞,1,0.34,どこ (1),1,初級前半
11,で,デ,助詞-格助詞,8,2.71,で (8),
,
12,生れる,ウマレル,動詞-一般,1,0.34,生れ (1),2,初級後半
13,た,タ,助動詞,16,5.42,た (16),,
14,か,カ,助詞-終助詞,1,0.34,か (1),
,
15,と,ト,助詞-格助詞,12,4.07,と (12),,
16,んと,ウント,感動詞-フィラー,1,0.34,んと (1),
,
17,見当,ケントウ,名詞-普通名詞-一般,1,0.34,見当 (1),4,中級後半
18,が,ガ,助詞-格助詞,8,2.71,が (8),,
19,つく,ツク,動詞-非自立可能,1,0.34,つか (1),3,中級前半
20,ぬ,ズ,助動詞,2,0.68,"ず (1), ぬ (1)",
,
21,何,ナニ,代名詞,3,1.02,何 (3),1,初級前半
22,も,モ,助詞-係助詞,7,2.37,も (7),,
23,薄暗い,ウスグライ,形容詞-一般,1,0.34,薄暗い (1),4,中級後半
24,じめじめ,ジメジメ,副詞,1,0.34,じめじめ (1),4,中級後半
25,する,スル,動詞-非自立可能,7,2.37,"し (6), さ (1)",
,
26,所,トコロ,名詞-普通名詞-副詞可能,1,0.34,所 (1),2,初級後半
27,ニャーニャー,ニャアニャア,副詞,1,0.34,ニャーニャー (1),,
28,泣く,ナク,動詞-一般,1,0.34,泣い (1),3,中級前半
29,て,テ,助詞-接続助詞,13,4.41,て (13),
,
30,いる,イル,動詞-非自立可能,1,0.34,い (1),,
31,事,コト,名詞-普通名詞-一般,3,1.02,事 (3),2,初級後半
32,だけ,ダケ,助詞-副助詞,1,0.34,だけ (1),
,
33,記憶,キオク,名詞-普通名詞-サ変可能,1,0.34,記憶 (1),4,中級後半
34,いる,イル,動詞-非自立可能,3,1.02,いる (3),1,初級前半
35,ここ,ココ,代名詞,1,0.34,ここ (1),1,初級前半
36,始める,ハジメル,動詞-非自立可能,1,0.34,始め (1),2,初級後半
37,人間,ニンゲン,名詞-普通名詞-一般,4,1.36,人間 (4),3,中級前半
38,いう,イウ,動詞-一般,7,2.37,いう (7),1,初級前半
39,もの,モノ,名詞-普通名詞-サ変可能,4,1.36,もの (4),3,中級前半
40,を,ヲ,助詞-格助詞,5,1.69,を (5),,
41,見る,ミル,動詞-非自立可能,2,0.68,見 (2),1,初級前半
42,しかも,シカモ,接続詞,1,0.34,しかも (1),4,中級後半
43,あと,アト,名詞-普通名詞-副詞可能,1,0.34,あと (1),1,初級前半
44,聞く,キク,動詞-一般,1,0.34,聞く (1),1,初級前半
45,と,ト,助詞-接続助詞,1,0.34,と (1),
,
46,それ,ソレ,代名詞,1,0.34,それ (1),1,初級前半
47,書生,ショセイ,名詞-普通名詞-一般,3,1.02,書生 (3),,
48,中,チュウ,接尾辞-名詞的-副詞可能,1,0.34,中 (1),3,中級前半
49,一番,イチバン,副詞,1,0.34,一番 (1),1,初級前半
50,|,"",補助記号-一般,1,0.34,| (1),
,
51,獰悪,ドウアク,名詞-普通名詞-形状詞可能,1,0.34,獰悪 (1),,
52,種族,シュゾク,名詞-普通名詞-一般,1,0.34,種族 (1),5,上級前半
53,ある,アル,動詞-非自立可能,3,1.02,"あっ (2), あろう (1)",
,
54,そう,ソウ,名詞-助動詞語幹,1,0.34,そう (1),,
55,この,コノ,連体詞,2,0.68,この (2),1,初級前半
56,の,ノ,助詞-準体助詞,2,0.68,の (2),
,
57,時々,トキドキ,名詞-普通名詞-副詞可能,2,0.68,時々 (2),2,初級後半
58,我々,ワレワレ,代名詞,1,0.34,我々 (1),4,中級後半
59,捕える,トラエル,動詞-一般,1,0.34,捕え (1),5,上級前半
60,煮る,ニル,動詞-一般,1,0.34,煮 (1),4,中級後半
61,食う,クウ,動詞-一般,1,0.34,食う (1),4,中級後半
62,話,ハナシ,名詞-普通名詞-サ変可能,1,0.34,話 (1),2,初級後半
63,しかし,シカシ,接続詞,1,0.34,しかし (1),2,初級後半
64,その,ソノ,連体詞,3,1.02,その (3),1,初級前半
65,当時,トウジ,名詞-普通名詞-副詞可能,1,0.34,当時 (1),4,中級後半
66,考,カンガエ,名詞-普通名詞-一般,1,0.34,考 (1),3,中級前半
67,ない,ナイ,形容詞-非自立可能,1,0.34,なかっ (1),,
68,から,カラ,助詞-接続助詞,1,0.34,から (1),
,
69,別段,ベツダン,副詞,1,0.34,別段 (1),,
70,恐しい,オソロシイ,形容詞-一般,1,0.34,恐しい (1),3,中級前半
71,思う,オモウ,動詞-一般,2,0.68,"思っ (1), 思わ (1)",2,初級後半
72,ない,ナイ,助動詞,1,0.34,なかっ (1),
,
73,ただ,タダ,接続詞,1,0.34,ただ (1),4,中級後半
74,彼,カレ,代名詞,1,0.34,彼 (1),3,中級前半
75,の,ノ,助詞-格助詞,8,2.71,の (8),,
76,掌,テノヒラ,名詞-普通名詞-一般,2,0.68,掌 (2),
,
77,に,ニ,助詞-格助詞,4,1.36,に (4),,
78,載せる,ノセル,動詞-一般,1,0.34,載せ (1),4,中級後半
79,られる,ラレル,助動詞,2,0.68,られ (2),
,
80,スー,スー,名詞-普通名詞-一般,1,0.34,スー (1),,
81,持ち上げる,モチアゲル,動詞-一般,1,0.34,持ち上げ (1),4,中級後半
82,時,トキ,名詞-普通名詞-副詞可能,2,0.68,時 (2),2,初級後半
83,か,カ,助詞-副助詞,1,0.34,か (1),
,
84,フワフワ,フワフワ,副詞,1,0.34,フワフワ (1),4,中級後半
85,感じ,カンジ,名詞-普通名詞-一般,2,0.68,感じ (2),3,中級前半
86,ばかり,バカリ,助詞-副助詞,1,0.34,ばかり (1),,
87,上,ウエ,名詞-普通名詞-副詞可能,1,0.34,上 (1),1,初級前半
88,少し,スコシ,副詞,1,0.34,少し (1),2,初級後半
89,落ちつく,オチツク,動詞-一般,1,0.34,落ちつい (1),4,中級後半
90,顔,カオ,名詞-普通名詞-一般,3,1.02,顔 (3),2,初級後半
91,いわゆる,イワユル,連体詞,1,0.34,いわゆる (1),5,上級前半
92,見,ミ,名詞-普通名詞-一般,1,0.34,見 (1),
,
93,始,ハジメ,名詞-固有名詞-人名,1,0.34,始 (1),,
94,妙,ミョウ,名詞-普通名詞-形状詞可能,1,0.34,妙 (1),5,上級前半
95,今,イマ,名詞-普通名詞-副詞可能,1,0.34,今 (1),1,初級前半
96,残る,ノコル,動詞-一般,1,0.34,残っ (1),3,中級前半
97,第,ダイ,接頭辞,1,0.34,第 (1),3,中級前半
98,一,イチ,名詞-数詞,2,0.68,一 (2),1,初級前半
99,毛,モウ,名詞-普通名詞-助数詞可能,1,0.34,毛 (1),
,
100,もつ,モツ,動詞-一般,1,0.34,もっ (1),2,初級後半
101,装飾,ソウショク,名詞-普通名詞-サ変可能,1,0.34,装飾 (1),5,上級前半
102,れる,レル,助動詞,1,0.34,れ (1),,
103,べし,ベシ,助動詞,1,0.34,べき (1),
,
104,はず,ハズ,名詞-普通名詞-一般,1,0.34,はず (1),4,中級後半
105,つるつる,ツルツル,副詞,1,0.34,つるつる (1),4,中級後半
106,まるで,マルデ,副詞,1,0.34,まるで (1),4,中級後半
107,薬缶,ヤカン,名詞-普通名詞-一般,1,0.34,薬缶 (1),,
108,後,ゴ,名詞-普通名詞-副詞可能,1,0.34,後 (1),1,初級前半
109,だいぶ,ダイブ,副詞,1,0.34,だいぶ (1),3,中級前半
110,逢う,アウ,動詞-一般,1,0.34,逢っ (1),1,初級前半
111,が,ガ,助詞-接続助詞,1,0.34,が (1),
,
112,こんな,コンナ,連体詞,1,0.34,こんな (1),1,初級前半
113,片輪,カタワ,名詞-普通名詞-一般,1,0.34,片輪 (1),5,上級前半
114,度,ド,名詞-普通名詞-助数詞可能,1,0.34,度 (1),,
115,出会わす,デアワス,動詞-一般,1,0.34,出会わし (1),
,
116,ない,ナイ,形容詞-非自立可能,1,0.34,ない (1),1,初級前半
117,のみ,ノミ,助詞-副助詞,1,0.34,のみ (1),,
118,なり,ナリ,助動詞,1,0.34,なら (1),
,
119,真中,マナカ,名詞-固有名詞-人名,1,0.34,真中 (1),,
120,あまり,アマリ,形状詞-一般,1,0.34,あまり (1),
,
121,突起,トッキ,名詞-普通名詞-サ変可能,1,0.34,突起 (1),6,上級後半
122,そう,ソウ,副詞,1,0.34,そう (1),3,中級前半
123,穴,アナ,名詞-普通名詞-一般,1,0.34,穴 (1),4,中級後半
124,中,ナカ,名詞-普通名詞-副詞可能,1,0.34,中 (1),2,初級後半
125,から,カラ,助詞-格助詞,1,0.34,から (1),,
126,ぷうぷう,プウプウ,副詞,1,0.34,ぷうぷう (1),
,
127,煙,ケムリ,名詞-普通名詞-一般,1,0.34,煙 (1),4,中級後半
128,吹く,フク,動詞-一般,1,0.34,吹く (1),3,中級前半
129,どう,ドウ,副詞,1,0.34,どう (1),2,初級後半
130,咽せる,ムセル,動詞-一般,1,0.34,咽せ (1),,
131,ぽい,ポイ,接尾辞-形容詞的,1,0.34,ぽく (1),
,
132,実,ジツ,名詞-普通名詞-一般,1,0.34,実 (1),5,上級前半
133,弱る,ヨワル,動詞-一般,1,0.34,弱っ (1),5,上級前半
134,これ,コレ,代名詞,1,0.34,これ (1),1,初級前半
135,飲む,ノム,動詞-一般,1,0.34,飲む (1),1,初級前半
136,煙草,タバコ,名詞-普通名詞-一般,1,0.34,煙草 (1),1,初級前半
137,ようやく,ヨウヤク,副詞,1,0.34,ようやく (1),4,中級後半
138,この頃,コノゴロ,名詞-普通名詞-一般,1,0.34,この頃 (1),*,
139,知る,シル,動詞-一般,1,0.34,知っ (1),1,初級前半

というような物なのですが、ここから名詞という単語が入っている配列のみを判定するためにstrposを使っているのですが、すべてnoとなり見つかっていないという結果になります。

該当のソースコード

PHP

1 2<?php 3$fp = fopen('vocabdata-csv-utf-8.csv', 'r'); 4 while (($line = fgetcsv($fp)) !== FALSE) { 5$target_string = "$line[3]"; 6$search_string = "名詞"; 7 8if(strpos($target_string, $search_string) !== false){ 9 //見つかった時の処理 10 echo "ok"; 11}else{ 12 echo "no"; 13} 14} 15fclose($fp); 16?> 17 18

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ssasaki

2018/10/10 07:55

書かれている条件だと "ok" が表示されるようにしか見えないので、再現する簡単なCSVファイルを挙げてもらった方が良いと思います。
oit1234

2018/10/10 08:16

csvファイルを掲載しました。
guest

回答4

0

ベストアンサー

自分自身のファイルがutf8じゃなければヒットしませんね

仮にこれならOKになりますよね?

PHP

1$target_string='string(6) "分類" nostring(9) "代名詞" nostring(16) "助詞-係助詞" nostring(26) "名詞-普通名詞-一般" nostring(9) "助動詞" nostring(22) "動詞-非自立可能" nostring(19) "補助記号-句点" nostring(26) "名詞-普通名詞-一般" nostring(6) "副詞" nostring(25) "形容詞-非自立可能" nostring(9) "代名詞" nostring(16) "助詞-格助詞" nostring(13) "動詞-一般" nostring(9) "助動詞" nostring(16) "助詞-終助詞" nostring(16) "助詞-格助詞" nostring(22) "感動詞-フィラー" nostring(26) "名詞-普通名詞-一般" nostring(16) "助詞-格助詞" nostring(22) "動詞-非自立可能" nostring(9) "助動詞" nostring(9) "代名詞" nostring(16) "助詞-係助詞" nostring(16) "形容詞-一般" nostring(6) "副詞" nostring(22) "動詞-非自立可能" nostring(32) "名詞-普通名詞-副詞可能" nostring(6) "副詞" nostring(13) "動詞-一般" nostring(19) "助詞-接続助詞" nostring(22) "動詞-非自立可能" nostring(26) "名詞-普通名詞-一般" nostring(16) "助詞-副助詞" nostring(32) "名詞-普通名詞-サ変可能" nostring(22) "動詞-非自立可能" nostring(9) "代名詞" nostring(22) "動詞-非自立可能" nostring(26) "名詞-普通名詞-一般" nostring(13) "動詞-一般" nostring(32) "名詞-普通名詞-サ変可能" nostring(16) "助詞-格助詞" nostring(22) "動詞-非自立可能" nostring(9) "接続詞" nostring(32) "名詞-普通名詞-副詞可能" nostring(13) "動詞-一般" nostring(19) "助詞-接続助詞" nostring(9) "代名詞" nostring(26) "名詞-普通名詞-一般" nostring(32) "接尾辞-名詞的-副詞可能" nostring(6) "副詞" nostring(19) "補助記号-一般" nostring(35) "名詞-普通名詞-形状詞可能" nostring(26) "名詞-普通名詞-一般" nostring(22) "動詞-非自立可能" nostring(22) "名詞-助動詞語幹" nostring(9) "連体詞" nostring(19) "助詞-準体助詞" nostring(32) "名詞-普通名詞-副詞可能" nostring(9) '; 2$search_string="名詞"; 3if(strpos($target_string, $search_string) !== false){ 4 //見つかった時の処理 5 echo "ok"; 6}else{ 7 echo "no"; 8} 9```; 10 11# サンプル合わせ 12OKでますよね。 13前回も書きましたがphpのファイル自体ちゃんとutf8形式で保存してますか? 14 15```PHP 16$fp = fopen('vocabdata-csv-utf-8.csv', 'r'); 17while (($line = fgetcsv($fp)) !== FALSE) { 18 $target_string = $line[3]; 19 $search_string = "名詞"; 20 if(strpos($target_string, $search_string) !== false){ 21 echo "ok<br>"; 22 }else{ 23 echo "no<br>"; 24 } 25} 26fclose($fp);

投稿2018/10/10 07:55

編集2018/10/10 09:12
yambejp

総合スコア114837

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oit1234

2018/10/10 08:11

それならokとでました。
guest

0

php自体をsjisで保存していたので、それをUTF8にすることで成功しました。

投稿2018/10/10 18:26

oit1234

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そのまんまコピペして実行した結果以下のようになりました。

nooknooknononooknonooknonononononooknononooknonononooknonononooknooknooknooknooknononooknonookokoknonookoknooknonookoknononooknonookoknononononononooknooknononooknooknonooknooknonooknookokokoknonookoknooknonooknonookoknonononookoknonononooknooknookoknonooknonononooknooknooknookno

きちんと "ok" も出ているようですが、そちらの環境では出ませんか??

投稿2018/10/10 08:27

ssasaki

総合スコア1167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oit1234

2018/10/10 18:25

UTF8で保存するといけるようになりました。ありがとうございます。
guest

0

"$line[3]" -> $line[3]
にしてみてください。 -> 検証結果、関係ありませんでした。無視してください。_ _)

ちなみに本文に書いてる条件で起動してみると、、ヒットしました。

投稿2018/10/10 07:57

編集2018/10/10 08:05
yeondev

総合スコア198

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oit1234

2018/10/10 08:10

変化はありませんでした。
yeondev

2018/10/10 08:12

line[3]に入るデータのechoから出たのが本文のデータでしょうか?
oit1234

2018/10/10 08:18

すいません、本文のデータを間違えていたのでCSVの中身を新しく載せました。
yeondev

2018/10/10 08:27

確認しました。$line[3]を、$lineにしてみましょうか?
oit1234

2018/10/10 18:26

UTF8にすることで解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問