• ベストアンサー

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

お世話になっています。 タイトルにあるように、別ファイルに記述のあるテキスト(改行あり)から、そのテキストを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() この部分でエラーとなってしまいましたが、ファイルを読み込むにもいくつかパターンがあるのですね。もう少し幅広い方法が理解できるようになりたいと思います。 勉強になりました。ありがとうございます! 同一ファイル内で、他のスクリプトの兼ね合いもあり、結果が出るのが遅れてしまい、ご挨拶が遅れました。すみません。