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

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

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

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

Q&A

解決済

3回答

12005閲覧

PHPでテキストファイル読込、配列にして表示

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

1クリップ

投稿2016/04/26 06:26

わからないこと

テキストファイルの読込、またそれを配列にして表示する方法

以前、HTMLの入力フォームに入力した文字列をPHPファイルに送り、指定したテキストファイルに改行して追加書き込みする。というコードを打ちました。

HTMLに入力された文字列は下記のように改行されて保存されてゆきます。そこで、それぞれの行がそれぞれの配列の要素となるようにしたいです。

どういった具合にソースを打てばよいのか、各初心者向けサイトを確認し試してみたのですがわかりませんでした。

ご回答、どうぞよろしくお願いいたします。

上記テキストファイルの状態

(入力された文字列1)
(入力された文字列2)
(入力された文字列3)
(入力された文字列4)


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

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

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

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

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

guest

回答3

0

ベストアンサー

/tmp/test.php

php

1<?php 2$text = file_get_contents('/tmp/test.txt'); 3$array = explode(PHP_EOL, trim($text)); 4 5var_dump($array);

/tmp/test.txt

hoge fuga pepe

実行結果

sh

1$ php /tmp/test.php 2array(3) { 3 [0]=> 4 string(4) "hoge" 5 [1]=> 6 string(4) "fuga" 7 [2]=> 8 string(4) "pepe" 9}

各初心者向けサイトを確認し試してみたのですがわかりませんでした。

マニュアルを利用しましょう。

  1. 「PHP ファイル 読み込み」などのキーワードで検索して、使えそうな関数の目星をつける
  2. 見つけた関数のマニュアルを読む
  3. 簡単なコードを書いて、動かしてみる

を繰り返していくうちに、次第に
「こういう場合は、この関数を使ってこうしたらできそうだ」
という勘が働くようになると思います。

ちなみに今回、使った関数は、以下です。
http://php.net/manual/ja/function.file-get-contents.php
http://php.net/manual/ja/function.explode.php
http://php.net/manual/ja/function.trim.php
http://php.net/manual/ja/reserved.constants.php <- PHP_EOL

投稿2016/04/26 06:53

KiyoshiMotoki

総合スコア4791

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

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

退会済みユーザー

退会済みユーザー

2016/04/26 06:59

うおお… ですよね。地道ですが、確実に力が付きますよね。 今度からマニュアルもしっかり併用していきたいと思います!
guest

0

配列への代入の仕方は様々ですけど解かり易く書くと

php

1$text = array();//配列を宣言 2$text[] = "入力された文字列1"; 3$text[] = "入力された文字列2"; 4$text[] = "入力された文字列3";

これで 文章を一件づつインデックス配列で$textに格納します
配列の内訳は
$text[0] => 入力された文字列1
$text[1] => 入力された文字列2
$text[2] => 入力された文字列3
[0]から始まる事を意識しておいてください。

配列を読み込んで表示する場合は

php

1foreach($text as $val){ 2//「foreach」で配列の中身を順番に読み込みます 3 echo $val; 4}

「($text as $val)」はこの[foreach]内で$taxt$valに省略しています
あまり意味が無いように思えるかもしれませんが 扱う配列変数が多くなってくると識別するために変数名が長くなってしまう場合やなんかに便利です。

投稿2016/04/26 06:46

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/04/26 06:49

おお! $taxtと$valについてはこれからきっと役に立ちそうな知識ですね。 超基本的なところも踏まえて教えてくださってありがとうございます!
guest

0

こんなんでどうでしょうか。

PHP

1$getFile = fopen('sample.txt', 'r'); 2if ($getFile){ 3 if (flock($getFile, LOCK_SH)) { 4 //一行ごとに処理を行う 5 while (!feof($getFile)) { 6 $str = fgets($getFile); 7 echo $str; 8 } 9 flock($getFile, LOCK_UN); 10 }else{ 11 //ファイルの展開に失敗 12 } 13}

sample.txtの部分を読み込みたいファイルに書き換えていただければおそらく動くのではないかと

投稿2016/04/26 06:37

tam-x2

総合スコア72

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

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

退会済みユーザー

退会済みユーザー

2016/04/26 06:43

うわ、ソース丸ごと打っていただけるなんて… 面目ない、ありがとうございます! ちなみにこちらをブラウザで確認したい場合は --- <!DOCKTYPE html> <meta charset="utf-8"> <lang="ja"> <title>kadai1-7</title> <head></head> <body> <?php $getFile = fopen('kadai1-6.txt', 'r'); if ($getFile){ if (flock($getFile, LOCK_SH)) { //一行ごとに処理を行う while (!feof($getFile)) { $str = fgets($getFile); echo $str; } flock($getFile, LOCK_UN); }else{ //ファイルの展開に失敗 } } ?> </body> <html> --- といった具合の記述じゃアウトですかね?
tam-x2

2016/04/26 06:49

> <meta charset="utf-8"> > <lang="ja"> > <title>kadai1-7</title> の位置が<head>の中じゃないところはあえてツッコミを避けますが、 記述されているコードで私の方では動きました。 なので問題ないかと思います。 ※phpを使っているのでローカルでは動かないと思います。
退会済みユーザー

退会済みユーザー

2016/04/26 06:57

つっこみ感謝いたしますw 初歩的なことなのに申し訳ありません。 ftpサーバーにアップして確認しているので、ローカルではないはずなのですが… もう少し自分で調べてみます。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問