私が開いているファイルは10mbから125mbである可能性があることに注意してください。私はファイルを開くためのさまざまな方法を研究しましたが、どれかが最善であるかどうかはまだわかりません。お知らせ下さい!
私は大きなファイルを開いて、最初の文字列が発生するたびに2つの文字列の間のテキストを抽出しようとしています。最初の文字列を見つけてテキストを2番目の文字列に抽出できますが、ループでその結果が12回表示されます(このファイルで文字列が発生する回数。ループで何が間違っているかを確認できます。基本的には最初の出現とその出力を12回繰り返す。ファイルをループして、2〜12回の出現の間にテキストを取得するにはどうすればよいですか。
また、大きなファイルを適切に開き、メモリ制限を処理するためのヒントは素晴らしいでしょう。
これを配列に入れると、空白が失われますか?PREを使ってそのまま正しく表示しています。最終的には、配列またはデータベースのいずれかで、見つかった各文字列をより小さな要素に解析したいと思います。私は自分より先に進みたくないので、必要に応じて配列のコメントを無視します。
<?php
ini_set('memory_limit', '-1');
/*
Functions
*/
function get_string_between($string, $start, $end){
$string = " ".$string;
$ini = strpos($string,$start);
if ($ini == 0) return "";
$ini += strlen($start);
$len = strpos($string,$end,$ini) - $ini;
return substr($string,$ini,$len);
}
/*
Pre Loop
*/
$string1 = "String 1";
$string2 = "String 2";
$report = file_get_contents('report.rpt','r');
$cbcount = substr_count($report,$string1);
echo $cbcount;
/*
Loop
*/
for ($i=0; $i<$cbcount; $i++){
$output = get_string_between($report, $string1, $string2);
echo "<pre>".$output."</pre>";
}
?>