2011-11-28 2 views
1

괄호 안의 텍스트를 잡을 방법 :내가 괄호 안에 텍스트를 캡처하는이 작은 코드가

$string = '[title=my title] http://bit.ly/gANFxi [maps:some cool place]';  
preg_match_all('/\[([^\]]*)\]/', $string, $matches); 
print_($matches[0]); 

내가 도착하면 다음과 같다 :

나는 "피하기 위해 더 제한 만들고 싶어
 
    Array(
     [0] => [title=my title] 
     [1] => [maps:some cool place] 
    ) 

[some-not cool] "또는"[another + stuff] ", 그래서 나는 [some : thing]과 [some = thing] 만 잡아야합니다.

어떻게하면됩니까? ':'무시 기타 :

$string = '[title=my title] http://bit.ly/gANFxi [maps:some cool place] [some-not cool] or [another+stuff]'; 
preg_match_all('/\\[([^\\]]*[\\=|\\:][^\\]]*)\\]/', $string, $matches); 
print_r($matches[0]); 

이 트릭을 할합니까

답변

2

이는 '='또는 포함 모든 것을 잡을 것인가? 아니면 추가 요구 사항이 있습니까? 즉,이 반환 "[일부 물건 = 일부 : 물건]"하지만 그것을해야합니까? (여러 단어와 '='와 ':'둘 다 기록하십시오).

+0

: $)를 선택한 다음, 다음 코드를 사용할 수 있습니다! 감사합니다 : D – greenbandit

+1

세계는 더 많은 정규 표현식 전문가가 필요합니다 –

+0

@ AdamSack, 세계는 더 많은 Chomskys가 필요합니다. – Godwin

1

평등은 문자로 만들어 져야한다 콜론 또는 전 부분은 다음과 같은 코드를 사용할 수있는 경우 : 첫 번째 부분은 제외한 PHP 식별자에 더 비슷한 일이 (경우

preg_match_all('/\[([a-z]+[:=][^\]]+)\]/i', $string, $matches); 

을 그것 뿐이다

preg_match_all('/\[([a-z_]+[a-z0-9_]+[:=][^\]]+)\]/i', $string, $matches); 
관련 문제