2008-10-08 2 views
1

여러 레코드가있는 텍스트 파일이 있습니다. 이름과 날짜를 검색하고 싶습니다. 예를 들어 JULIUS CESAR을 입력하면 JULIUS에 대한 전체 데이터가 추출됩니다. 정보 만 추출하려면 어떻게해야합니까?검색 후 추출

Record number: 1 
Date: 08-Oct-08 
Time: 23:45:01 
Name: JULIUS CESAR 
Address: BAGUIO CITY, Philippines 
Information: 
I lived in Peza Loakan, Bagiou City 
A Computer Engineering student 
An OJT at TIPI. 
23 years old. 

Record number: 2 
Date: 09-Oct-08 
Time: 23:45:01 
Name: JOHN Castro 
Address: BAGUIO CITY, Philippines 
Information: 
I lived in Peza Loakan, Bagiou City 
A Electronics Comm. Engineering Student at SLU. 
An OJT at TIPI. 
My Hobby is Programming. 


Record number: 3 
Date: 08-Oct-08 
Time: 23:45:01 
Name: CESAR JOSE 
Address: BAGUIO CITY, Philippines 
Information: 
Hi,, 
I lived Manila City 
A Computer Engineering student 
Working at TIPI. 
+0

이 질문은 SQL과 관련이 있습니까? –

답변

2

은 항목 당 하나 개의 라인 인 경우는 다음과 같은 정규 표현식을 사용할 수 있습니다 그리고

$name = "JULIUS CESAR"; 

사용 : 각 라인은 줄리어스 "에 대한 경우

/$name/i 

테스트 세사르. "

/Record number: (\d+) Date: (\d+)-(\w+)-(\d+) Time: (\d+):(\d+):(\d+) Name: $name Address: ([\w\s]+), ([\w\s]+?) Information: (.+?)$/i 

$ 1 = 레코드 번호

$ 2 $ 4 = 날짜

$ 5- $ 7 = 시간 : 그럼 당신은 단순히 (당신이 라인을 찾으면을) 정보를 추출하기 위해 다음과 같은 정규 표현식을 사용해야합니다

$ 6 = 주소

$ 7 = 의견

코드 예제를 작성 하겠지만 필자의 perl은 녹슬다. 난이 도움이 :)

PHP에서
+0

이것은 내게 잘 보이지 않는다. 정규 표현식의 끝 부분에서 $가 문자열의 끝인지 줄의 끝인지 기억하지 못한다. 그러나 나는 생각하지 않는다. 권리. 문자열이 끝나면 줄리어스 체사 (JULIUS CESAR) 이후에 나오는 모든 기록과 정보를 얻을 수 있습니다. 줄의 끝을 의미한다면 모든 정보 대신 단 한 줄의 텍스트 만 가져옵니다. – Nick

-1

, 당신은 같은 SQL SELECT 문을 실행할 수 있기를 바랍니다 :

"SELECT *를 WHERE name LIKE '줄리어스 %';"

모든 결과를 연관 배열로 얻을 수있는 PHP의 기본 요소가 있습니다. 행 순서로 정렬되어 있다고 확신합니다. 그러면 다음과 같이 할 수 있습니다 :

echo implode ("", $ whole_row);

희망 하시길 바랍니다.