2010-04-22 8 views
0

나는 다음과 같은 하나 개의 문자열이와 형태의 값`{값}`의 목록을 구문 분석합니다 ({}의 수하는 알 수없는) :정규 표현식

{test}{test1}{test2}{test3}{test4} 

가 지금은 콘텐츠를 좋아 {}에 넣고 배열에 넣으십시오. 어떻게해야합니까? 나는 시도했다 :

preg_match("/(\{{\S}+\}*/)*") 

그러나 결과는 틀리다. 누구에게나 도움을 주셔서 감사합니다.

+1

입력이 항상 유효하다고 가정 할 수 있습니까? – Gumbo

+0

왜'\ S'가 필요한가요? 공백을 걸러 내려고하십니까? –

답변

5
preg_match_all('/{(.*?)}/', $string, $match); 
print_r($match[1]); 
5
<?php 
$string = '{test}{test1}{test2}{test3}{test4}'; 
$parts = explode('}{', substr($string, 1, -1)); 

이 솔루션은 종종 단순한 문자열 함수보다 느린 정규 표현식을 사용하여 방지 할 수 있습니다. 또한 많은 프로그래머는 선호 때문에 실용적으로 정규 표현식을 사용하지 않으려합니다.

+1

+1은 ** 정규식을 사용하지 않습니다 **. – zombat

+0

사람들이 정규식을 너무 싫어하는 이유를 이해할 수 없습니다. –

+0

정규 표현식을 좋아하지만 여전히이 답변을 너무 많이 외쳤습니다 :)이 방법은 사람들을 필요로하지 않는 좋은 해결책입니다. 입력을 검증). –

1

시도 preg_match_all('/\{(.+)\}/U', $text)

+0

고마워요. – kelly