PHP regularexpression : 일치하는 일 (공백 포함)
-
18-09-2019 - |
문제
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\}/
제휴하지 않습니다 StackOverflow