请记住,我打开的文件可以是 10mb 到 125mb。我研究了各种打开文件的方法,但仍然不确定哪种方法最好。请指教!
我正在打开一个大文件并尝试在每次第一次出现时提取两个字符串之间的文本。我可以找到第一个字符串并将文本提取到第二个字符串,但是,我的循环给了我 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>";
}
?>