파일에서 다음 값을 찾을 좋은 방법이 뭐가 있을까요? 채택완료
파일내용은 (a.txt)
---------------------------------------------------
1
사용내역 : xxx
시간 - yyy
2
사용내역 : yyy
시간 - xxx
3
사용내역 : zzz
시간 - kkk
장소 - ddd
---------------------------------------------------
이런 형식입니다.
장소 항목이 들어가기도 하고 들어가지 않기도 하는 랜덤입니다.
제가 추출하고 싶은 항목은 "3" 입니다.
저 내용이 10개일 수도 있고(이땐 10) 2개 일 수도 있고(이땐 2) 100개 일 수도 있고(이땐 100) 너무 들쭉날쭉입니다.
즉 맨 마지막 항목의 숫자를 추출하고 싶은데......
count함수를 이용해보려 했으나 이것도 정형화 된부분이 아니라 애매하고
좋은 아이디어가 있을까요?
답변 4개
운영체제가 리눅스이고 shell_exec 명령이 사용 가능하다면..
</p>
<p>$filepath = "파일경로";</p>
<p>$n = 4;</p>
<p>$lastlines = explode("\n", trim(shell_exec("tail -{$n} {$filepath}")));</p>
<p>$found = $lastlines[0];</p>
<p>
이렇게 하시면 되고.. shell_exec 명령 사용이 안되고 파일 크기가 별로 크지 않고 메모리 여유가 있다면
</p>
<p>$filepath = "파일경로";</p>
<p>$n = 4;
$data = file($filepath);
$lastlines = array_slice($data, count($data)-$n, $n); </p>
<p>$found = $lastlines[0];</p>
<p>
이렇게 하시면 될듯요
답변에 대한 댓글 3개
[code]
$filepath = "파일경로";
$data = file($filepath);
$n_data = count($data);
$found = false;
for($i=$n_data-1; $i>=0; $i--) {
if(is_numeric($data[$i])) {
$found = $data[$i];
break;
}
}
if($found !== false) {
// 값 발견했음
}
[/code]
제일 마지막 라인부터 거꾸로 오면서 숫자값만 있는건지 체크하면 되겠네요
댓글을 작성하려면 로그인이 필요합니다.
</p>
<p>간단하게 다음처럼 할 수 있겠네요</p>
<p><span class="token variable">$data</span> <span class="token operator">=</span> <span class="token function">file</span><span class="token punctuation">("a.txt"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token variable">$nn</span> <span class="token operator">=</span> <span class="token function">count</span><span class="token punctuation">(</span><span class="token variable">$data</span><span class="token punctuation">)-4</span><span class="token punctuation">;</span></p>
<p>if( is_numeric($data[$nn]) $num =$data[$nn];</p>
<p>else if( is_numeric($data[$nn+1]) $num =$data[$nn+1];</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
굳이 저 파일형식을 유지하실이유가 무엇일까요?
파일형식을 .csv / .xls / .json 과 같은 정형적인 포멧으로 변환을 먼저 하는게 우선일것같네요
.txt의 비정형파일을 읽어서 강제로 설정하는 에너지보다 정형화된 패턴을 만들어서 진행하시는게 빠를것같습니다.
답변에 대한 댓글 1개
좋은 아이디어 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
파일의 숫자(1, 2, 3...) 밑의 항목이 어떤건 5줄, 어떤걸 2줄 어떤건 6줄 이렇게 비형식적인데
상관 없을까요?
보니까 마지막 항목의 라인을 좀 감안해야 하나 보네요....
이게 3줄일때도 있고 4줄일때도 있고 그 이상일때도 있어서...
좋은 아이디어 감사합니다.