문제

나는 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] 타투의 대답에서와 같이.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top