Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo alves23

Problemas com lógica !

Recommended Posts

Olá amigo,

 

Tenho um problema com lógica assim:

 

Meu texto é estilo o TWITTER vou remeter uma mensagem com citação assim:

 

" Oi hoje eu estou feliz e comunico você #marcolive e #ultrabala para irmos á uma festa ".

 

Por exemplo como eu faria para retirar somente os dados #marcolive e #ultrabala do texto, lembrando que esses nomes são aleatórios e nunca serão fixos.

 

Aguardo uma luz :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode utilizar uma ER

 

case tudo oq vier junto do #.

Estude sobre Expressões Regulares, e consulte o manual do php para detalhes das funções q você vai ter q usar.

 

http://php.net/preg_

Compartilhar este post


Link para o post
Compartilhar em outros sites

algo do tipo:

 

(#[a-z]+)

 

um grupo de letras começando por #, sem espaços.

Tipo, em vez de pesquisar a ER, monte a sua, do zero. Pesquise para entender oq é ER.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por exemplo agora achei isso oh:

 

Como eu faria nesse código para inves de pegar os emails, para que eles peguem os #teste .... e #teste entendeu?

 

function extrairEmails($string) {
    $pattern = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i';
    preg_match_all($pattern, $string, $matches);
    return isset($matches[0]) ? $matches[0] : array();
}

$test_string = 'String de exemplo
        email@email.com.br
        Procurar emails:
        email2@email.com.br;
        <a href="email3@email.com.br">email</a>
        <email4@email.com.br>';

print_r(extrairEmails($test_string));

/*
  Saida:

  Array
  (
  [0] => email@email.com.br
  [1] => email2@email.com.br
  [2] => email3@email.com.br
  [3] => email4@email.com.br
  )
*/

 

Não tinha visto que respondeu.

 

Agora sim entendi vou testar e agradeço muito sua ajuda.

 

um abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, novamente um problema com lógica.

 

Como faria para assim toda a vez que parecer uma palavra #... como nesse exemplo:

 

" Oi hoje eu estou feliz e comunico você #marcolive e #ultrabala para irmos á uma festa ".

 

Tipo, assim, toda vez que aparece o #marcolive ele fique automáticamente em negrito, ou seja toda palavra começada com #... alguma coisa ele fique em negrito!

 

Eu somente pergunto quando realmente fiquei horas procurando e não consegui encontrar uma lógica básica.

 

Aguardo se puder ajudar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai você pode fazer com a mesma ER de cima.

 

só que usando um preg_replace()

 

trocaria oq casar na ER, por esse grupo com as tags <strong>$1</strong> em volta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela ajuda.

 

Consegui dessa forma :)

 

 

 $a = "Oi hoje eu estou feliz e comunico você @marcolive e @ultrabala para irmos á uma festa";
   $b = preg_replace("(@[a-z]+)", '<b>$0</b>', $a);
   print $b;

 

Abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu usei o preg_replace(), você não notou ?

 

        $li .= preg_replace(  
           Array(  
               '/@([\w]+)/',  
               '/(#[\w]+)/'  
           ),  
           Array(  
               '<a href="http://twitter.com/#!/$1" title="$1">@$1</a>',  
               '<a href="http://twitter.com/#!/search/$1" title="$1">$1</a>'  
           ),  
           $post->text  
       ); 

só q fiz 2 trocas ao mesmo tempo, por isso os arrays ali.

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.