2011-10-02 5 views
1

내가 잘 작동 다음 정규식 패턴이 : 나는 다음과 같은 예를 들어, 입력 지원 있도록 확장 할 그러나검증과 특별히 포맷 문자열을 일치

#^(.+?)=(.+?)$#D 

을 :

텍스트를 = 좀 더 텍스트, 뭔가

텍스트 = 좀 더 텍스트, 뭔가, 뭔가

텍스트 = 좀 더 텍스트, 그래서 mething, 뭔가 당신은 위의 예에서 볼 수 있듯이 뭔가

은 세미콜론 (;) 문자가 구분자로 사용하는 경우와 (이 텍스트 사이) 텍스트를 분리해서하는 데 사용됩니다 입력.

아래와 같은 정규식 패턴을 사용할 수 있습니다 - theres가 하나 일 때만 작동하지만 세미콜론으로 더 많은 텍스트가 분리 된 경우에는 그렇지 않습니다 ... 아마 다음과 같은 내용을 추가 할 수 있습니다. [;]*하지만 유효성 검사가 해당 형식으로되어 있는지 확인하기를 원합니다 (세미콜론을 텍스트 사이에서만 사용할 수는 없습니다).

#^(.+?)=(.+?);(.+?)$#D 

그것은 내가 현재 (그래서 경기가 array() 형태로 활용 될 수있다) PHP의 preg_match() 기능을 사용하고 도움이된다면.

내가 생각할 수있는 유일한 방법으로 정규 표현식을 사용하는 것에 국한되지 않으므로 다른 방법이나이 방법과 함께 사용할 수있는 모든 방법을 환영합니다 (결과를 제공하는 것은 쉽게 얻을 수 있습니다. 배열 LOL).

또한이 글을 쓰면서 (태그 시스템을 통해 깜박임) 뉴스 플래시가 있음을 알려드립니다 ... 을 사용하여 PCRE 재귀 기능을 사용하는 것이 가능한 해결책 일 수 있습니까?

감사의 인사와 도움을 주신 모든 분들께 감사드립니다.

#^(.+?)=((.+?)(;)?)+$#D 

답변

3

왜 그냥 세미콜론에 폭발 하반기에 explode()를 사용

+0

흠, 그런 생각은하지 않았지만 정확한 양식을 보장 할 수 있을까요? – user962026

+0

예제가 있으면 잘 작동합니다. – Amber

+0

감사합니다. array_map ('trim', $ arr)과 array_filter()의 조합으로 explode()를 사용하여 잘못된 항목을 제거했습니다. – user962026

1

이 정규식을 시도 할 수 있습니다?

+0

Unfourtanetly가 제대로 생성 경기가 예상 뭐죠하지 작동하지 않습니다. – user962026

+0

어떤 경우 작동하지 않습니까? –

0

봅니다 :

#^(.+?)=(.+?)(;(.+?))+?$#D

0

나는 시도 할 것이다 :

#^(.+?)=(.+?)(?:;(.+?))+?$#D