Php regex para pegar {tag} algo {/tag}
-
19-09-2019 - |
Pergunta
Estou tentando vir = Up uma string regex para usar com as funções PHP Preg (preg_match, etc.) e estou perseguido nisso:
Como você combina esta string?:
{area-1}some text and maybe a <a href="http://google.com">link</a>.{/area-1}
Quero substituí -lo por uma string diferente usando preg_replace.
Até agora, pude identificar a primeira tag com preg_match como este:
preg_match("/\{(area-[0-9]*)\}/", $mystring);
Obrigado se você pode ajudar!
Solução
Se você não tem tags aninhadas, algo tão simples deve funcionar:
preg_match_all("~{.+?}(.*?){/.+?}~", $mystring, $matches);
Seus resultados podem ser encontrados em $matches[1]
.
Outras dicas
eu sugeriria
preg_match_all("~\{(area-[0-9]*)\}(.*?)\{/\1\}~s", $mystring, $matches);
Isso vai até funcionar se outras tags estiverem aninhadas dentro do area
Tag que você está olhando.
Se você tiver vários area
Tags aninhadas umas nas outras, ainda funcionarão, mas você precisará aplicar o Regex várias vezes (uma vez para cada nível de ninho).
E, claro, o conteúdo das partidas estará em $matches[2]
, não $matches[1]
Como na resposta de Tatu.