2011-09-23 7 views
1

이 정규 표현식을 사용하여이 문자열 {string}과 일치시킬 수 있습니다. /{(.*)}/s (PHP의 preg_replace_callback 함수).정규식 (preg_match_all)

하지만 문자열이 {tag}{/tag}처럼 태그 사이에 포함되는 경우 그 문자열을 어떻게 일치하지 않는, 예를 들어

: 나는 {tag} Anything Here {string} Anything Here {/tag}{string}과 일치하지 않을
.

모든 제안 (또는 예)을 환영합니다.

+3

"tag"에 가능한 값은 몇 가지가 있습니까? 다음은 간단한 작업 일 수 있습니다. – DhruvPathak

+0

태그가 중첩되어있을 가능성이 있습니까? –

+0

@DhruvPathak : 3 가지 가능한 값이 있다고 생각합니다. – Pawan

답변

2

당신은 그와 함께 재생할 수 있습니다 : 당신이 볼 수 있듯이

preg_match_all("/(\{string\})|(\{tag\}.+\{.+tag\})/", $str, $m); 

echo "<pre>"; 
print_r($m); 
echo "</pre>"; 

는, 그 표현이 세 가지 배열 요소와 m을 반환합니다. 두 번째 배열 엘 엘먼트는 {tag} .... {string} .... {/ tag}에없는 모든 {string}을 포함합니다.

+0

어떻게'preg_replace_callback'과 함께 작동합니까? 해당 함수를 보여주는 다른 코드 예제를 추가 할 수 있습니까? – hakre

+0

"preg_replace_callback"함수를 사용 해본 적이 없으므로 좋은 수렴감을 줄 수는 없습니다. 그러나 당신이 마음에 드시면 결과로 얻으려는 것을 묘사 할 수 있으며 최선의 해결책을 찾기 위해 검색 할 것입니다. –

+0

나는 OP에서'preg_replace_callback'을 요구했기 때문에 묻고있었습니다. 질문을 오도하지 않도록 제목을 편집합니다. – hakre