문제

text text text
text text text

{test}
    content
    content
    content
{/test}

text text text
text text text

위의 문자열에서 두 가지 별도의 결과를 얻어야합니다.
1.

{test}
    content
    content
    content
{/test}

2.

    content
    content
    content

따라서 두 분리 된 것은 무엇입니까? 정규 표현 패턴 ~을 위한 PHP 위의 두 결과를 얻으려면

도움이 되었습니까?

해결책

다음과 같은 것은 어떻습니까 :

$str = <<<STR
text text text
text text text

{test}
    content
    content
    content
{/test}

text text text
text text text
STR;

$m = array();
if (preg_match('#\{([a-zA-Z]+)\}(.*?)\{/\1\}#ism', $str, $m)) {
    var_dump($m);
}

이런 종류의 출력을 얻을 수 있습니다.

array
  0 => string '{test}
    content
    content
    content
{/test}' (length=50)
  1 => string 'test' (length=4)
  2 => string '
    content
    content
    content
' (length=37)

그래서 $m[0] 당신은 전체 일치 문자열을 가지고 있습니다 (즉, 태그+콘텐츠), 그리고, 그리고 $m[2] 태그 사이에만 콘텐츠 만 있으면됩니다.

참고 "일반적인"태그를 사용했지만 구체적으로 사용하지 않았습니다. "test"; 당신은 당신이 가질 경우에만 변경할 수 있습니다."test"태그.

더 많은 정보를 얻으려면 적어도 다음을 살펴볼 수 있습니다.

다른 팁

태그와 내용을 함께 캡처하려면 :

/(\{test\}[^\x00]*?\{\/test\})/

내용 만 캡처하려면 :

/\{test\}([^\x00]*?)\{\/test\}/
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top