사용자가 세부 정보를 입력하는 텍스트 영역이 있습니다. 텍스트 영역에서 연도를 추출하고 싶습니다. 문제는 사용자가 다른 방법으로 연도를 입력한다는 것입니다.preg_match를 사용하여 연도를 추출하는 방법
일부 사용자는 1999
또는 '99
또는 september 99
과 같이 날짜를 입력합니다. 단일 정규식 문자열을 사용하여 연도를 추출하는 방법은 무엇입니까?
사용자가 세부 정보를 입력하는 텍스트 영역이 있습니다. 텍스트 영역에서 연도를 추출하고 싶습니다. 문제는 사용자가 다른 방법으로 연도를 입력한다는 것입니다.preg_match를 사용하여 연도를 추출하는 방법
일부 사용자는 1999
또는 '99
또는 september 99
과 같이 날짜를 입력합니다. 단일 정규식 문자열을 사용하여 연도를 추출하는 방법은 무엇입니까?
이 언급 된 날짜를 추출하는 작업을해야 유닉스 타임 스탬프로 영어 텍스트 날짜 설명에 대해 구문 분석 만료시 :
이 (10) 내 마음에 와서도 (이 사용자에게 좀 더 자유를 제공합니다)의
preg_match_all('/(^|\s+)((january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)?(\s|\s?\')(\d{2}|\d{4}))(\s+|$)/i', $text, $matches);
모두 여러 표현과 구문 분석시 위 쉬울 것이다. 왜 하나가 필요한거야?
이 외에는 아무것도 포함하지 않은 문자열을 구문 분석하기 만하면 PHP의 strtotime()
-function을 사용해야합니다. 당신의 문자열에서
+1 정확히 스펙을 따르는 솔루션. 확실히 사양은 불완전하다 :) 헤이, 나는 2 월 99에 들어갔다! 작동하지 않습니다! –
\b\d\d(?:\d\d)?\b
은 2 자리 또는 4 자리 숫자와 일치합니다. 따라서 문자열에 연도 번호 만 있으면 충분합니다.
if (preg_match('/\b\d\d(?:\d\d)?\b/', $subject, $regs)) {
$result = $regs[0];
}
[. -]((?:\d\d|')\d\d)$
추출 숫자 만 :
/\b(\d+)\b/
... 그들은 같은'textarea'에 날짜와 달을 입력 혹시 않나요? –
@tim 확실하지 않습니다. 어떤 사람들은 sep'99 또는 september '99로 달을 사용하는 반면. –
이것은 질문의 접선이지만 정보가 입력 될 때 정보가 혼동 될 가능성이있는 경우 문제는 ** 잘못된 사용자 인터페이스 디자인 **입니다. 연도 지정이 모호하지 않도록 입력 방법을 변경해야합니다. –