php regex to grab {tag} something {/tag}
-
19-09-2019 - |
문제
나는 PHP Preg 함수 (preg_match 등)와 함께 사용할 수있는 정규식 문자열을 가지고 오려고 노력하고 있으며 다음과 같습니다.
이 문자열과 어떻게 일치합니까? :
{area-1}some text and maybe a <a href="http://google.com">link</a>.{/area-1}
preg_replace를 사용하여 다른 문자열로 교체하고 싶습니다.
지금까지 나는 다음과 같은 preg_match로 첫 번째 태그를 식별 할 수있었습니다.
preg_match("/\{(area-[0-9]*)\}/", $mystring);
도와 드릴 수 있다면 감사합니다!
해결책
중첩 된 태그가없는 경우이 간단한 것이 작동해야합니다.
preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);
그런 다음 결과를 찾을 수 있습니다 $matches[1]
.
다른 팁
내가 제안 할게
preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);
다른 태그가 내부에 중첩되어 있으면 작동합니다. area
당신이보고있는 태그.
몇 가지가 있다면 area
서로 안에있는 태그는 여전히 작동하지만 여전히 작동하지만 Regex를 여러 번 적용해야합니다 (각 레벨의 둥지마다 한 번).
물론 경기의 내용은 $matches[2]
, 아니다 $matches[1]
타투의 대답에서와 같이.
제휴하지 않습니다 StackOverflow