2009-09-29 9 views
0

데이터를 다 쓸 때 필요한 문자열이 있습니다. 문자열을보고 필요로하는 부분을 전후에 데이터를 삭제하도록 PHP에 지시하는 간단한 방법이 필요합니다. 예는 다음과 같습니다문자열 내의 데이터를 검색합니다. 정규식?

When: Sat 19 Sep 2009 22:00 to Sun 20 Sep 2009 03:00  

내가 삭제할 "때"후 후 & 모든 것을 제거합니다. 이거 정규식인가요? 전에는 사용하지 않았습니다.

답변

1

정규 표현식을 사용하지 않겠습니다.

$data = substr($input, 6, strpos($input, '&') - 6); 
1

예, 정규 표현식은 잠에서 이런 종류의 일을 할 수 있습니다.

$result = preg_replace('/When:(.*)&.*/', '$1', $text); 

UPDATE 다른 많은 텍스트의 중간에 날짜 만 범위를 찾으려면, 여기에 문제의 하나와 일치하는 원유 정규식은 ...

if (preg_match('/[a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2} to [a-z]{3} [0-9]{2} [a-z]{3} [0-9]{4} [0-9]{2}:[0-9]{2}/i', $text, $regs)) { 
    $result = $regs[0]; 
} else { 
    $result = ""; 
} 
+1

$ result = preg_replace ('/ when :([^ &] *) &. * /', '$ 1', $ text); ' –

+0

죄송 합니다만, 그 지역의 전후에 많은 텍스트가 있어야합니다. 그 부분을 제거하기위한 정규 표현식이 필요합니다. – Plasticated

+0

아, 당신은 그렇게 말하지 않았습니다. 일반 텍스트 본문 중간에 날짜 범위를 찾을 수있는 정규식을 포함하도록 답변을 업데이트했습니다. 약간 조잡하지만 각 부분 주위에 괄호를 추가하면 날짜의 모든 부분에 별도로 액세스 할 수있어 유용 할 수 있습니다. –

0

그래서 당신은

그럼 당신은 확실히 regexp와 갈 수 있습니다 "2009년 9월 3시 일 20 토 2009년 9월 19일 22:00"유지하려는 것입니다. 나는 PHP에서 정규 표현식에 대해 잘 모르겠지만, PERL, 당신은

/^ 같은 somehing을 할 수있는 : \ & NBSP; $/(*.).

그런 다음 (. *)를 사용하여 보관하려는 항목을 모두 얻을 수 있습니다. PERL에서, 그것은 $ 1 var를 볼 것입니다.

또는 당신이 뭔가

/^

같이 할 수있는 (. ) & \를. & 이후의 내용이 가변적 인 경우 $/

또한주의해야합니다. 보관하려는 문자열에 &이 포함되어 있으면 조금 더 까다로울 수 있습니다.

그러나 정규식은 일반적으로 이런 종류의 작업을 위해 가지고 할 수있는 방법입니다.