Quantcast

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
  1. AC
    António Coutinho

    Muito bom, continuem, agradecemos! 😀

    1. VI
      Vinícius

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

  2. DC

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

  3. TC

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

    1. SO
      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. BB

        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. TC

        Isso seria o 4º argumento opcional 🙂

  4. SO
    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. AN

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

  6. BÓ

    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. IC
    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. DA
      Dakiga

      ^^ Owned xD

    2. BB

      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. IC
        Ice

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

        1. BB

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

          Se é esse o caso, obrigado pela dica.

Deixe um comentário