Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho a necessidade de fazer uma substituição do conteúdo de uma variável quando certa ocorrência acontecer.
bem seria para a "montagem" do layout onde seria o que possui entre {{IF FOTO}} QUALQUER COISA {{ENDIF FOTO}}.
infelizmente meu conhecimento de expressões regulares é muito pequeno e estou com o seguinte código:
$layout = preg_replace('#[{{IF FOTO}}]+[*]+[{{ENDIF FOTO}}]#', '', $layout);
Gostaria muito da ajuda para montar esta expressão. No código citado acima ele encontra a ocorencia e REMOVE tudo (não funciona com o seguinte erro: "Warning: preg_replace() [function.preg-replace]: Compilation failed: nothing to repeat at offset 14 in aquivo.php")
Se possível gostaria de também se alguem tiver conhecimentos de bibilhotecas para estudo dessas expressões.
OBS: Desta forma funciona:
$layout = str_ireplace(substr($layout, stripos($layout, '{{IF FOTO}}'), stripos($layout, '{{ENDIF FOTO}}') - stripos($layout, '{{IF FOTO}}') + 14), '', $layout);
Atenciosamente,
Nandel
Exatamente pelos problemas citados que descidi mudar a forma como era feito isso.
apesar que na verdade isso é feito dentro de uma repetição com centenas de "variáveis" e o "14" na vdd era um strlen().
Obrigado pelas instruções, foram de grande ajuda.
para quem tiver interesse o código:
$layout = preg_replace('^{{(IF FOTO)}}.*{{END\1}}^', '', $layout)
Melhor do que saber que pude ajudar alguém é saber que esse alguém (no caso você) não ficou parado esperando o peixe limpo e assado e sim recebeu o material, foi atrás, estudou aprendeu, fez sozinho e ainda compartilho de livre e espontânea vontade a solução para o problema.
:clap:
Primeiramente vamos te ajudar com o seu "conhecimento muito pequeno de Expressões Regulares".
Quando se fala em ER (para os íntimos), no Brasil, logo se vem à cabeça o Guia ER do Aurélio (não é o dicionário).
Estude esse guia com carinho. Para o seu problema você precisa do necessitado não-guloso opcional, com apoio de retrovisores e talvez da criptonita.
Quanto à sua implementação sem ER, também é válida. Ela só tem dois problemas:
O problema disso é que (int) FALSE é igual a zero e sua limpeza pode acabar apagando tudo.