• ベストアンサー

別ファイルからテキストを抽出

お世話になっています。 タイトルにあるように、別ファイルに記述のあるテキスト(改行あり)から、そのテキストを1行で変数に代入したく、以下のようにしています。 $file = "http://~"; $text = file($file); for($i=0: $i<count($text); $i++){  $text_data .= $text[$i]; } #上記スクリプトはコピペじゃなく、今手元で記述したもなので、間違っていたらすみません。 上記スクリプトにより変数に代入された1行テキストを他のスクリプトに利用したいのですが、上手くいかず、色々と試しているなかで、$text_dataを出力してメモ帳にコピペしてみると、何箇所かに改行されているところが確認できました。 改行されているところとは、元のファイルを作成する際、エンターキーにより改行されているところなのですが、改行されている前後をコピペする分には問題ないものの、テキスト全文(文字数は1万文字を数える)をコピペすると、エンターキーによる改行箇所(全てじゃないです)が、メモ帳において改行されてしまいます。(普段使っているterapadでは全てがコピペできていない) このような状況なのですが、別ファイルからテキストを1行として取得するには、どのようにしたら良いのでしょうか? 勉強不足でfile()を利用していますが、他の方法が思いつかず利用しているので、別の方法でも構いません。ご教示のほど宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がよくわからないのですが file_get_contents()で受けて、改行をとりのぞいてみては? <?php $fname='http://localhost'; $str= file_get_contents($fname,true); $str=preg_replace("/\n|\r/","",$str); echo $str; ?>

a4_chapp
質問者

お礼

yambejp様 こんばんは。早速のアドバイスをありがとうございます! お陰さまで解決することができました。 $str=preg_replace("/\n|\r/","",$str); これですが、preg_replace()で置き換えるという発想が出てきませんでした。正規表現、もっと勉強したいと思います。 ありがとうございました! 他のスクリプトの兼ね合いもあり、ご挨拶するのが遅れて申し訳ありませんでした。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Sylar
  • ベストアンサー率71% (10/14)
回答No.3

$file=file_get_contents("http://~"); $text_data=explode("\n",$file); echo $text_data[0]; こんなんでどうですか?

a4_chapp
質問者

お礼

Sylar様 こんばんは。ご親切なアドバイスをありがとうございます! ご回答して下さった皆様の方法をすべて試したのですが、この方法ではうまくいきませんでした。 呼び出したいファイル内にあるテキストは、多くの改行を含んでおり、改行を省いたテキストを1行として変数に入れたく、そのためfile()を用いて、配列を分解?した際、その都度変数にいれていたのです。 私の説明不足でしたが、ご親切に回答して下さり感謝しております。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

fread ― バイナリセーフなファイルの読み込みです。 <?php // ファイルの中身を読んで文字列に格納する $filename = "/usr/local/something.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); //読み込んだ後、改行文字を取り除く(正規表現より早い) $crlf = array("\r\n", "\n", "\r"); $text_data = str_replace($crlf, "", $contents); $newstr = str_replace($order, $replace, $str); ?>

参考URL:
http://www.php.net/manual/ja/function.fread.php
a4_chapp
質問者

お礼

yyr446様 こんばんは。早速のアドバイスをありがとうございます! 勉強不足も手伝ってか、あいにくfread() この部分でエラーとなってしまいましたが、ファイルを読み込むにもいくつかパターンがあるのですね。もう少し幅広い方法が理解できるようになりたいと思います。 勉強になりました。ありがとうございます! 同一ファイル内で、他のスクリプトの兼ね合いもあり、結果が出るのが遅れてしまい、ご挨拶が遅れました。すみません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAでテキストファイルの改行を無視する方法

    VBAでテキストファイルにある文字列を配列の変数に格納したいのですが、改行が含まれているとそこから2バイトずつずれてしまいます。 1行毎に読もうとしても1行の文字列が6000バイトぐらいあるので変数に格納しきれません。 読み込むテキストファイルは _________0_________1_________2・・・・________10 _______100________51 のようになっており、10バイトずつ変数に格納していきたいです(スペースも格納する必要あり) 以下のように作ったのですが、改行のあるところからずれてしまいます。 Sub ファイル読み込み() Dim buf(30000000) As String Dim i As Long i = 0 With CreateObject("Scripting.FileSystemObject") With .OpenTextFile("C:\test.text", 1) Do While .AtEndOfStream <> True buf(i) = .read(10) Loop End With End With End Sub 「次の文字列が改行コードである」ということが分かれば.skipで飛ばせるのですが、その判定式が探しても見つかりません。 どなたかご教授よろしくお願いします。

  • バッチでテキストファイルから任意の行のみ取得したい

    batファイルを作成していて、 txtから特定の行のみをとりだし、変数に入れたいです。 どうもよくわからないので質問したいと思います。 まず以下の様なテキストファイルがあります。 ------------------- 111 222 333 ------------------- 実際の値、行数は違いますが、こんな感じに文字列が複数行並んでいます。 行いたい動作は、 ----------------------------------------- 1.テキストファイルの1行目を変数Textに入れる(set Text=111) 2.変数Textを使用し色々処理をする 3.テキストファイルの2行目を変数Textに入れる(set Text=222) 4.変数Textを使用し色々処理をする ----------------------------------------- コレを繰り返します。 2と4は同じ動作ですので、行数のカウンタを設定しループさせる予定です。 n行目を全て取り出す方法がわかれば行けると思うのですが、 どうも見つかりません。ご存知の方がいればお教え願いたいと思います。

  • 外部テキストをsplitで分割する時

    宜しくお願いいたします。 外部テキストをsplitで分割しようと思うのですが・・。 スクリプトはこんな感じになっています。 System.useCodepage = true; // Shift-JISのテキストを読み込む設定に変更 myText01 = new LoadVars(); // 新規LoadVarsオブジェクトmyTextの作成 txt_file01 = "text/text001.txt"; // 外部テキストファイル名を変数txt_fileに代入 myText01.load(txt_file01); // 外部テキストファイルの読み込み _root.bp=t001 //変数 myText01.onLoad = function(ok) { if (ok) { // 外部テキストファイルを読み込んだときの処理 work_txt = myText01._root.bp.split("~"); と書いて、text/text001.txtというテキストのt001という行を"~"で分割したいのですが、うまくいきません・・・。 変数でオブジェクトを指定しているのが悪いと思うのですが、何か良い方法はありますか? 何分初心者なもので・・・。 説明がわかりづらいかもしれませんが、困ってしまっているので宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 【Excel】テキストが改行位置以外で改行される

    こんにちは HTMLのテキストファイルをテキストファイルウィザードを通して開くと 改行位置ではないところで改行されてしまい困っています。 メモ帳で開くと1行になっています。 そのメモ帳の文字をコピーしてExcelにペーストしても同じでした。 メモ帳で見えない改行コードが入っているのでしょうか? まったく同じような文章でも、改行されてしまう行と改行されない行があります。 改行されないように開くにはどうしたらよいでしょうか。 Excel2013です。

  • javascriptで別ファイルから変数を受け取る

    って方法ありますか?あったら知りたいです。 A.htmlファイル <script type="text/javascript"> var i=0; </script> B.htmlファイル <script type="text/javascript"> h=1+i; document.write("'<p>'+h+'</p>'"); </script> もう一つ、このボタンを押したらB.htmlファイルに移り、変数も一緒に移動する方法も知りたいです。 A.html <form action="B.htm" method="post" onclick="i"> <input type="submit"value="押す" onclik=""> 変数iをBに送りたいです。

  • 外部テキストの読み込み

    Flash lite1.1で、外部テキストの読み込みが実現できません。 text.txtファイルをswfと同じフォルダに作成し、中身を「text=あいうえお」にしました。 swfのほうでダイナミックテキストで変数を「text」にし、同じシーンのボタンに下のスクリプトを記述 しました。 // on (press) { loadVariables("text.txt",0); } // よろしくお願いします。

    • ベストアンサー
    • Flash
  • 改行コードの入っていないテキストファイルが開けるテキストエディタは?

    1レコードが256バイトのテキストデータが格納されているファイルがあるのですが、このファイルには改行コードが入っていません。 テキストエディタにてファイルの中身を確認したいのですが、メモ帳ですときれいに表示できません。 1行256バイトで表示できるフリーのテキストエディタをどなたかご存知でしょうか。 ご存知の方がいらっしゃいましたら教えてください。 お願いします。

  • 【テキスト】改行コードCR+LFの時だけ改行したい

    こんにちは。 HTMLを記述したテキストを含むCSVファイルを、 メモ帳で開くと1行で表示されるのですが、 それをexcelや、テキストエディターで開くと メモ帳で改行していないところで改行されてしまいます。 おそらく、テキストエディターでHTMLを書いた部分は途中で改行されないのですが、 Dreamweaverで書いた部分で改行が入っている様なのです。 調べると、改行コードというのがいくつかあり、メモ帳では改行されないが、 その他の高機能エディターでは改行するコードがあり、 それが途中に入っている様な感じです。 メモ帳で開く様に、改行コードCR+LFの時だけ改行して、 改行していないところでは改行を入れないで開きたいのです。 この、「メモ帳では改行しない改行コード」だけを取り除いて保存することはできるのでしょうか。 高額なテキストエディターでは、そのような事ができるようなのですが、 できればフリーソフトで完結したいです。 よろしくお願いします。

  • 簡単なチャットを作るにあたって

    テクストボックスを2個用意して(Text1、Text2)Text2で文を書いてエンターキーを押すとText1にその文を表示させたいのですがどうしたらできるのでしょうか? 書いた文が自動的に改行されたものをつくってるんですが、なぜか1行しかかけず新たに書いても改行がされませんでした。 初心者質問ですみません^^;

  • htmlファイルの要素を別ファイルにしたい

    ローカルで利用するhtmlファイルを作成しています。 <input type="text" autocomplete="on" list="mylist"> <datalist id="mylist"> <option value="1行目"></option> ・ ・ <option value="200行目"></option> </datalist> datalistのoptionが200行以上あり、 HTMLに直接書いて管理するのがキツイと判断しました。 そこで、別のテキストファイルなどにし HTMLにChildを追加していけば良いのではないかと思ったのですが ローカルのテキストファイルが読めずに困っています。 最初の「require」で引っかかってしまうため上手くいきません。 要素を別ファイルに置いておき、参照できるような いい方法は無いでしょうか。 <script language="javascript"><!-- function TEST() { const fs = require('fs'); const readline = require('readline'); const rs = fs.createReadStream('data/List.txt'); const rl = readline.createInterface({ input: rs }); rl.on('line', (line) => { console.log(line);}); } // --></script> お手数をおかけしますが、回答よろしくお願いいたします。