내가 열어 본 파일은 10MB에서 125MB가 될 수 있습니다. 필자는 파일을 여는 다양한 방법을 연구했으며 어떤 것이 최선의 방법이라면 최선의 접근법을 확신 할 수 없습니다. 제발 조언 해!파일의 모든 문자열 찾기
큰 파일을 열고 처음 발생할 때마다 두 문자열 사이의 텍스트를 추출하려고합니다. 첫 번째 문자열을 찾고 두 번째 문자열의 텍스트를 추출 할 수 있지만 내 루프는 그 결과를 12 번 제공합니다 (문자열의 수는이 파일에서 발생합니다.) 나는 루프에서 잘못하고있는 것을 볼 수 있습니다. 첫 번째 발생 및 출력 12 번 반복 어떻게 파일을 반복하고 2-12 번째 항목 사이에 텍스트를 가져올 수 있습니까?
또한 큰 파일을 적절하게 열고 메모리 제한을 처리하는 데 도움이되는 정보는 매우 유용합니다
배열에 넣으면 공백을 잃어 버릴 수 있습니까? PRE를 그대로 사용하면 결과적으로 찾은 각 문자열을 배열이나 db 중 작은 요소로 구문 분석하고 싶습니다. 자신보다 앞서 가고 싶지 않으므로 필요한 경우 배열 주석을 무시하십시오.
<?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>";
}
?>
0 => '찾은 문자열'... (길이 = 5048) 출력이 전체 문자열을 표시하지 않는 것처럼 보이는 것처럼 고유한지 확인할 수 없습니다. 위의 형식은 무엇을 의미합니까? 문자열이 "found"로 바뀌 었습니다. 인터넷 검색 ... (길이 = 5048) 아무것도 가져 오지 않습니다. 배열에서 12 개의 문자열을 얻었습니다. 이 말이 맞습니다. – villeneuve97
print_r ($ matches)을 사용했습니다. 나는 전체 문자열을 얻었다. 그것의 모든 거기! 도와 주셔서 감사합니다. – villeneuve97