Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

turok

sistema de tags

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.