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

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

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

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

Q&A

解決済

3回答

2742閲覧

ファイルの中に記述されている1行目を取得し、画面に表示させたい

bitcoiner2045

総合スコア47

PHP

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

0グッド

0クリップ

投稿2018/07/09 09:35

編集2018/07/10 04:54

Macでワードで、
1行目
2行目
3行目
と文字を打ち、txtにして保存しました。(ファイル名:phptanaka)
次にviエディタで下記を打ち込みました。

<?php $fp= fopen("phptanaka", "r"); $lines = fgets($fp); fclose($fp); $hoge = file("phptanaka"); print $hoge[0]; ?>
Warning: fopen(phptanaka): failed to open stream: No such file or directory in /Users/tanakaakio/aaa.php on line 3 Warning: fgets() expects parameter 1 to be resource, boolean given in /Users/tanakaakio/aaa.php on line 5 Warning: fclose() expects parameter 1 to be resource, boolean given in /Users/tanakaakio/aaa.php on line 7 Warning: file(phptanaka): failed to open stream: No such file or directory in /Users/tanakaakio/aaa.php on line 9

追記:

<?php $fp= fopen("/Users/tanakaakio/Desktop/phptanaka.txt","r"); $line = fgets($fp); fclose($fp); $hoge = file("/Users/tanakaakio/Desktop/phptanaka.txt"); print $hoge[0]; ?>

エラーは出なくなりましたが「?P?s??」と表示されます。

改めて何が間違っているのでしょうか。ご回答願います。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/07/09 09:39

提示されたコードと実行結果が矛盾しています。提示されたコードを実行した結果、提示されたエラーは出ません。
bitcoiner2045

2018/07/09 09:43

Parse error: syntax error, unexpected '"' in /Users/tanakaakio/aaa.php on line 10でした!すいません!
退会済みユーザー

退会済みユーザー

2018/07/09 09:47

print "$hoge[ 1 ]" の後ろにセミコロンがない
bitcoiner2045

2018/07/09 09:52

セミコンロつけてParse error: syntax error, unexpected '"' in /Users/tanakaakio/aaa.php on line 10となりました(泣)
退会済みユーザー

退会済みユーザー

2018/07/09 09:53

最新のコードとエラーを質問文に反映してください。
mather

2018/07/09 10:02

全角空白が混じっているようです。半角空白に置換してください。
mather

2018/07/09 10:03

ソースコードの部分をMarkdownのコードブロックで囲んでください。
m.ts10806

2018/07/10 02:53

プログラムコード(およびエラーメッセージ)は質問内容としては最も重要な部分であるため、見やすくしていただけると助かります。<code>ボタン押下→「コード」部分にコードを貼り付け→「ここに言語を入力」に対象言語名記入(エラーメッセージの場合は不要)の手順で「コードハイライト化」してください。(質問編集画面ではリアルタイムでプレビューが表示されるので見ながら調整してください)
m.ts10806

2018/07/10 02:56 編集

保存したテキストファイルを開きたいのではないのですか?なぜ保存先フォルダ名?
bitcoiner2045

2018/07/10 03:06

すいません。フォルダではなくファイルの間違いです。
m.ts10806

2018/07/10 03:34

fopen→fgetsしておきながら何にも使っていないのはなぜでしょう?
ttyp03

2018/07/10 04:22

最初に提示したコードを次々修正しないでください。初期の頃に回答した内容と齟齬が発生します。修正コードを追記する形で質問を修正してください。
bitcoiner2045

2018/07/10 04:23

わかりました。気をつけます。
m.ts10806

2018/07/10 04:58

もう1つ気をつけてください。1つの質問で全てを解決しようと思わないことです。次々と問題が起こるのは初学者では良くあることですが、1つ1つ「解決」していく必要があります。1つ解決して問題が起きたらすぐ質問 というのは良くありません。今回のように最初の回答と後の回答で見ている質問内容が違い、回答者に迷惑をかけることがあるからです。問題が起きたらまず調べてやってみて何が分からないか質問をするのがteratail利用の上での原則です。ここでコピペで動くコードをもらってそれで動いて喜んでいても何も成長はありませんよ。一度締めて、調べて出直してください。
m.ts10806

2018/07/10 04:59

私のコメントについては何かありますか? >fopen→fgetsしておきながら何にも使っていないのはなぜでしょう?
m.ts10806

2018/07/10 05:03 編集

ひとまず「取得内容を表示したい」という要件は他の皆さんの回答から私の回答までで満たせたはずです。現在起きているのは別の問題です。一度締めて調べてやってみた上で出直してください。
guest

回答3

0

ベストアンサー

ひとまず2018/07/10 12:04時点の同コード、同ファイルで試しましたが、再現しませんでした。
提示内容ですと「1行目」と出力されます。

質問内で

Macでワードで、~~~~と文字を打ち、txtにして保存しました。

とあります。
ファイル名合ってます?
私の方ではコードに合わせて「phptanaka」という拡張子なしのファイルを作成して確認しました。
ワードで保存したなら.docxなどでしょうし、txtで保存であれば.txtになっているはずです。

ファイルを読み込む前にファイルの存在チェックを入れてみてください。
※自身が把握しているファイルであってもお作法として入れておくべきと思います。

php

1<?php 2$filename = "phptanaka"; 3if(!file_exists($filename)) die("ファイルが存在しません:".$filename); 4$fp= fopen($filename, "r"); 5 6$lines = fgets($fp); 7fclose($fp); 8 9$hoge = file($filename); 10print $hoge[0];

これで、[ファイルが存在しません:{ファイル名}]と出力されれば、
パスが間違っているかファイルが存在しないかどちらかです。
ファイルを保存した場所をきちんと指定できていますか?その場所にそのファイルがありますか?
確認してみてください。

投稿2018/07/10 03:42

編集2018/07/10 03:46
m.ts10806

総合スコア80850

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

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

0

[ 1 ]で空白を空けているのが問題では。
[1]と詰めて書けばOK。
もっとも、この場合、他の文字列と混ぜて出力するわけではないので、ダブルクォーテーションで囲む必要はないですね。

PHP

1print $hoge[ 1 ];

また1行目を出力したいのであれば、[1]ではなく[0]になります。

投稿2018/07/10 02:56

ttyp03

総合スコア16998

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

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

m.ts10806

2018/07/10 03:45

(私は低評価押していませんが)配列のキー指定が文字列ではなく数値なら空白あけてるのは問題ないですよ。 [ "1" ] と同じです。[" 1 "]だと別の扱いになるはずですけど。
ttyp03

2018/07/10 04:02

paizaで試したらエラーになったのでそう書いたんですけど、環境によるのでしょうか。 間違っているのなら低評価もやむなしです。
m.ts10806

2018/07/10 04:05 編集

あ、そうなんですね。 私も自身のローカルPHP環境とpaizaでミニマムコード試したんですが、 $hoge = [1,2,3]; print $hoge[ 1 ]; でエラーにならなかったので、不思議だなと思い。
ttyp03

2018/07/10 04:09

ていうか、今質問見たらコード変わってるじゃないですか。 元々は print "$hoge[ 1 ]"; って書かれてたんすよ。 修正後のコードに対して評価されたらたまらんですね。
m.ts10806

2018/07/10 04:12

おお、、、私もほぼ完成したコード見てました。 大変失礼しました。
guest

0

print の行末にセミコロンがないですね。
これで直るかはわかりませんが。

投稿2018/07/09 11:55

millionx

総合スコア50

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

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

bitcoiner2045

2018/07/10 00:13

printの行末にセミコロンをつけましたが、まだエラーが出ます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問