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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top