PHP é à quinta-feira – Criar Links

15 Comentários

Boas,

A nível de direitos sobre o código, devo remeter-vos para o meu primeiro artigo desta rubrica.

Esta semana trago-vos uma função que já criei há muito tempo, e tem sofrido algumas melhorias e alterações consoante o projecto em causa.

Para alguns pode não parecer útil, mas simplifica-me a vida muitas vezes usar uma função em PHP para gerar código HTML que se repete com regularidade, como acontece com os links (tag <a>)

<?php
function getLink($url,$name,$params = '')
{
  $config_url = “http://www.pplware.com/”;
  if (!stristr($url,"http://") && !stristr($url,"ftp://") && !stristr($url,"https://") && !stristr($url,"javascript:") && !stristr($url,"mailto:"))
  {
    $url = $config_url.$url;
  }
  if (!stristr($url,"mailto:"))
  {
    $url = str_ireplace("&amp;","&",$url);
    $url = str_ireplace("&","&amp;",$url);
  }
  $link = '<a href="'.$url.'"';
  if (!empty($params))
    $link .= ' '.$params;
  $link .= '>'.$name.'</a>';
  return $link;
}
?>

Modo de utilização:

É bastante simples e intuitivo, segue um exemplo de como criar um link para o fórum e outro para o artigo “Correr aplicações Android no Ubuntu”.

<?php
echo getLink('http://forum.pplware.com/',”Fórum Pplware”,'target=”_blank”');
echo getLink('2009/05/28/correr-aplicacoes-android-no-ubuntu/',”Correr aplicações Android no Ubuntu”);
?>

Qualquer dúvida ou sugestão, estão completamente à vontade.

Comentários

15

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de António Coutinho
    António Coutinho

    Muito bom, continuem, agradecemos! 😀

    1. Avatar de Vinícius
      Vinícius

      Na verdade eu acho mais fácil criar esse tipo de link com classes, mas parabéns, ótimo trabalho!

  2. Avatar de delaorden9.com

    beleza Bruno…super cool, alto nivel, como sempre…keep it up buddy ! 🙂

  3. Avatar de Tiago Carvalho

    E porque não no 3º argumento colocar apenas “blank” e a função tratar do resto?

    1. Avatar de softclean
      softclean

      Foi uma coisa que também pensei, mas vendo bem podes ter o interesse em adicionar alguma função de javascript ao clicar na ligação, o coloca um atributo title, por exemplo.

      1. Avatar de Bruno Bernardino

        Claro que se pode “simplificar” dessa forma, caso o 3º argumento tivesse um objectivo simples, como o target, mas utilizo assim no geral, porque permite adicionar funções em javascript, class’s, etc.

      2. Avatar de Tiago Carvalho

        Isso seria o 4º argumento opcional 🙂

  4. Avatar de softclean
    softclean

    Boa dica. Isso aplicado a uma função para criar automaticamente hiperligações de um texto, era fantástico! 😉 fica a sugestão.

  5. Avatar de Andrer757

    O 3º parâmetro da função podia ser um array. exemplo: array(‘title’ => ‘kklkoisa’, ‘target’ => ‘_blank’).

  6. Avatar de Bónus

    Grande coincidência! Antes de vir dar a minha espreitadela diária ao Pplware, estive a desenvolver uma pequena função em PHP para criar links! 🙂 Um pouco diferente, pois substitui sempre uma determinada palavra pelo respectivo link com a função str_replace.
    Dá muito jeito quando temos um site onde inserimos bastante conteúdo dinâmico e queremos que certa palavra apareça sempre como link.

  7. Avatar de Ice
    Ice

    Em vez de

     if (!stristr($url,"http://") && !stristr($url,"ftp://") && !stristr($url,"https://") && !stristr($url,"javascript:") && !stristr($url,"mailto:"))
      {
        $url = $config_url.$url;
      }
    

    porque não simplificar?

    if(!preg_match('/((ht|f)tp(s)?:\/\/|(javascript|mailto):)/i', $url)) { 
        $url = $config_url.$url;
    }
    
    1. Avatar de Dakiga
      Dakiga

      ^^ Owned xD

    2. Avatar de Bruno Bernardino

      Fica mais curto, mas expressões regulares consomem muitos mais recursos (principalmente com tantos “ou”‘s) do que comparações de string. No entanto, é verdade que o que fizeste também está correcto e até abrange um caso que eu não tenho, o do ftps://

      1. Avatar de Ice
        Ice

        Não é para desmoralizar mas acredita que neste caso fica mais rápido do que chamar 5 vezes a função stristr().

        1. Avatar de Bruno Bernardino

          Não fiz os testes, mas não digo que é impossível.

          Se é esse o caso, obrigado pela dica.