2010-07-17 2 views
0

PHP를 사용하여/빼기를 ​​두 번하고 싶습니다. 매번 별도의 문서 내에서 그리고 나서 다른 단일 텍스트 문서 나 HTML 태그가없는 html 문서 내에서 결과 (PHP는 두 번 빼서 결과)를 쓰게됩니다. 두 번 빼서 특정 플레이어가이 스크립트를 사용하는 게임을 얼마나 오래했는지를 결정합니다. 또한, 스크립트가 두 번 빼야한다고 말하면 실제로 한 명의 플레이어에 해당되므로 전체적으로 두 번 이상 빼야합니다. 얼마나 많은 사람들이 실제로 게임을하는지에 따라 다릅니다.PHP를 사용하여 특정 라인의 시간을 뺍니다.

당신이 살펴 경우 아래 다음, 이것은이 경우 내 관련이없는 다른 숫자 뒤에 플레이어 현지 시간뿐만 아니라 플레이어의 사용자 이름이 포함 된 텍스트 파일 :

텍스트 파일 "begin.txt"라고합니다 :

"AULLAH1" "2010년 1월 7일 15시 28분", "55621454", "123456" "123456.00"

"USERNAME"7 "/ 3/2010 6:21 PM ""55621454 ""123456 ""123456.00 "

"AULLAH1" "2010년 7월 7일 15시 5분", "55621454", "189450" "123456.00"

"SUPREMEGAMER" "2010년 7월 8일 6:42 PM" "55621454", "123456" "123456.00 "

"AULLAH1 "사용자 이름 항목이 두 번 있습니다.이 플레이어는 게임을 두 번 수행했습니다. 첫 번째 줄의 다음 항목은 "AULLAH1"사람의 날짜와 현재 시간 인 "01/07/2010 15:28"입니다. 날짜와 시간 이후의 다른 데이터는 부적절하므로 무시할 수 있습니다.

"AULLAH1" "2010년 1월 7일 15시 54분"end.txt "라는 제목의 또 다른 텍스트 문서 내에서

는, 이전의 텍스트 파일과 같은 형식으로되어 다음과 같은 데이터입니다 ""55621454 ","123456 ""123456.00 "

"USERNAME ""2010-07-03 6:49 PM ""55621454 ","123456 ""123456.00 "

"AULLAH1 ""2010년 7월 7일을 15:32 ""55621454 ""189450 ""123456.00 "

이 텍스트 파일의 차이점은이 플레이어가 게임을 끝내지 못했기 때문에 "SUPREMEGAMER"라는 플레이어가 없다는 것입니다. 또한 게임을 끝내야하는 사용자에 따라 시간이 다릅니다. 플레이어 "AULLAH1"도이 플레이어가이 게임을 두 번 완료 했으므로 두 번 나열됩니다.

나는 PHP 스크립트가 사용자 이름 "AULLAH1"의 마지막 항목에 대한 end.txt 파일을 검색하고 그 후에 전체 줄을 다시 검색하여 begin.txt에서 "AULLAH1"의 마지막 항목을 검색하고 그런 다음 시간을 뺍니다. 일단 빼서, 사용자 이름과 시간을 다른 텍스트 문서 또는 HTML 태그가없는 html 문서 내에서 작성해야합니다. 텍스트는 앞에서 설명한대로입니다. 그래서, 이것은 단지 "AULLAH1"사용자를위한 시간을 보여줄 것이므로,이 과정을 end.txt 문서 내의 모든 사용자 이름에 대해 수행하고 싶습니다.

모든 도움을 주시면 감사 드리며 답변을 기다리겠습니다. 고맙습니다. :) 내가 명확하게 설명하지 않았거나 더 자세히 설명하고 싶으면 답장을 보내주십시오. :)

+1

모든 게임이 끝나기 때문에 begin.txt와 end.txt가 섞여있는 것 같습니다. :-) 그러나 순차적으로 쓰여진 두 파일입니까? – qbi

+0

파일에서 줄을 가져오고 CSV 필드를 구문 분석하려면 ['fgetcsv']부터 시작하십시오. (http://de3.php.net/manual/en/function.fgetcsv.php) – Gordon

+0

그 텍스트 파일에서 데이터베이스로 전환! 진부하게도이 플랫 텍스트 파일 대신 데이터베이스로 작업 할 수 있다면 엄청난 시간을 절약 할 수 있습니다. 데이터베이스에 대해 모르는 경우에도 시간과 노력이 절약됩니다. – Charles

답변

1

여기서 검색하는 텍스트 파일은 다루지 않을 것입니다.결국 결국 시작 시간과 종료 시간을 얻는다 고 가정 해 봅시다. 이 둘의 차이를 얻는 것은 꽤 쉽습니다.

(나는 당신이 당신의 시간을 거꾸로했다고 생각합니다. "끝"파일의 시간은 항상 "시작"파일의 시간보다 낮습니다, 그리고 그것은 아마도 옳지 않을 것입니다. DD/MM/YYYY 형식의 날짜 (예 : 일 수 있음)은 13 일 이전의 어느 날에도 모호 할 수 있으므로 올바르게 구문 분석하지 않습니다 .YYYY-MM-DD 형식으로 저장하는 것이 좋습니다. 명확한.)

일반적인 유닉스 타임 스탬프를 사용하는 방법 1입니다.

// First we have our times in a human readable format. 
// Let's make them into unix timestamps 
$start_time = strtotime('01/07/2010 15:28'); 
$end_time = strtotime('01/07/2010 15:54'); 
$difference_in_seconds = $end_time - $start_time; 
// If you need the difference in minutes or hours, you'll need to 
// do the math yourself. 
echo "That turn took {$difference_in_seconds} seconds to complete."; 

다음은 PHP의 새로운 DateTimeDateInterval 클래스를 사용하는 방법이 있습니다. PHP 5.3 이상에서만 작동합니다.

// We have our times in human readable format. 
// Let's make them into DateTimes 
$start_time = new DateTime('01/07/2010 15:28'); 
$end_time = new DateTime('01/07/2010 15:54'); 
$interval = $end_time->diff($start_time, true); 
echo "That turn took " . $interval->format('%h hours, %i minutes and %s seconds.'); 
+1

답장을 보내 주셔서 감사합니다. Charles, 정말 고맙습니다. :) 죄송합니다, 당신이 올바른지 내 begin.txt 및 end.txt 파일을 어쨌든 지금은 그것을 업데이 트했습니다. 나는 첫 번째 질문에서 너무 많은 것을 요청했고, 내가 제공 한 스크립트가 마음에 들었고 사용하고 싶습니다. 고마워요. 유용하다고 생각합니다. :) – AUllah1