turok 0 Denunciar post Postado Novembro 26, 2004 Como fazer um sistema de tags igual ao do forum? Qnd vamos postar existem botões como o php por ex. que insere /PHP/ na caixa de texto. Como pego e coloco estas tags na caixa de texto. Tentei usar expressões regulares, mas quando é repetido a mesma tag da erro por causa do *, retorna tb o que estiver entre as tags no ex. "conteúdo fora da tag" PHP [/tr][tr]<tag>conteúdo1</tag>conteúdo fora da tag<tag>conteúdo2</tag>[/tr] PHP [/tr][tr]eregi("[<][t][a][g][>]*[<][/][t][a][g][>]")[/tr] Compartilhar este post Link para o post Compartilhar em outros sites
michelsp 0 Denunciar post Postado Novembro 26, 2004 eregi_replace... Compartilhar este post Link para o post Compartilhar em outros sites
fael 1 Denunciar post Postado Novembro 26, 2004 Ao invéz de usar [<][t][a][g][>]*[<][/][t][a][g][>], porque você não usa [<tag>].*[</tag>]? Compartilhar este post Link para o post Compartilhar em outros sites
dokkalfr 0 Denunciar post Postado Novembro 26, 2004 Não tem que reinventar a roda!!!! O PEAR tem uma classe pronta pra isso, e em http://www.phpclasses.org tem umas 5 diferentes!!! Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 26, 2004 ok.... muitttttttttttto obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 26, 2004 Conhece alguma classe? Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 26, 2004 como digo em exp reg. que quero que busque somente o conteúdo entre as tags? PHP [/tr][tr]<tag>conteúdo</tag>menos este texto<tag>conteúdo2</tag>[/tr] este ex. retorna tudo PHP [/tr][tr]$string = "<tag>conteúdo1</tag>conteúdo fora da tag<tag>conteúdo2</tag>";$exp = "[<tag>]*[</tag>]"; if (eregi($exp, $string, $temp)) { $valor = print_r($temp); echo "'$valor' "; }[/tr] Compartilhar este post Link para o post Compartilhar em outros sites
michelsp 0 Denunciar post Postado Novembro 26, 2004 ou você troca por exemplo <tag> pelo correspondente em html, ou você pode usar: 'preg_match_all', pra pegar todos... Sua ER ta errada, tbm. Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 26, 2004 no lugar de * de ser .*é isto? Compartilhar este post Link para o post Compartilhar em outros sites
dokkalfr 0 Denunciar post Postado Novembro 27, 2004 1) Use preg_* ( http://br.php.net/pcre ) ... é mais rápido ;) 2) Use /U dá uma lida na documentação que tu entende o q eu quis dizer com /U Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 29, 2004 não entendo inglês, usei um tradutor e não compreendi muito bem o que faz o /U. N tradução diz: Este modificador inverte o "greediness" dos quantifiers de modo que não sejam greedy pelo defeito Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 29, 2004 Continuo com o mesmo problema se exista repetição da tag, retorna tb o contúdo entre as tags: PHP [/tr][tr]$html = "<b>bold text</b><tag>dois</tag><a href=howdy.html>click me</a><tag>três</tag>";$pattern =" /(<(pc)>)(.*)(<\/pc>)/ "; // PROCURA <tag>tudo</tag> preg_match_all($pattern, $html, $matches); for ($i=0; $i< count($matches[0]); $i++) { $msg.= "matched: " . $matches[0][$i] . "\n"; $msg.= "part 1: " . $matches[1][$i] . "\n"; $msg.= "part 2: " . $matches[3][$i] . "\n"; $msg.= "part 3: " . $matches[4][$i] . "\n\n"; } // SAÍDA/* matched: <pc>dois</pc><a href=howdy.html>click me</a><pc>três</pc> part 1: <pc> part 2: dois</pc><a href=howdy.html>click me</a><pc>três part 3: </pc> */[/tr] Compartilhar este post Link para o post Compartilhar em outros sites
turok 0 Denunciar post Postado Novembro 29, 2004 Descobri o que foi, alterei: PHP [/tr][tr]$pattern =" /(<(pc)>)(.*?)(<\/pc>)/ ";[/tr].*? // tenta casar o pattern da frente primeiro, se não casa, casa qualquer coisa. Isto se repete até que o pattern da frente seja encontrado. Compartilhar este post Link para o post Compartilhar em outros sites