Fizemos para o novo site da Verticis uma integração com o Twitter, que lista a última atualização feita (em breve publicarei aqui um tutorial sobre a integração). Após a inauguração nos deparamos com um problema: o texto da atualização era escrito cru, sem nenhum link para urls, profiles (@) ou hashtags. Então, após algumas pesquisas encontramos um código que, utilizando expressões regulares em PHP, varre o texto e substitui os devidos links.

O script executa as seguintes substituições:

Cria links na forma @usuario para o perfil do usuário.
Cria links na forma #hashtag para a página de busca do twitter buscando pela tag.
Cria link normais para urls.

O código abaixo recebe a string da atualização do twitter e o converte, retornando a string com o html apropriado, tornando os links clicáveis.

1
2
3
4
5
6
7
8
9
10
11
12
/**
 * Função que converte link contidos em atualizações do twitter.
 * @param string $status Texto da atualização.
 * @return string Retorna a atualização com os links convertidos.
 */
function twitterify($status) {
    $status = preg_replace("#(^|[\n ])([\w]+?://[\w]+[^ \"\n\r\t< ]*)#", "\\1\\2", $status);
    $status = preg_replace("#(^|[\n ])((www|ftp)\.[^ \"\t\n\r< ]*)#", "\\1\\2", $status);
    $status = preg_replace("/@(\w+)/", "@\\1", $status);
    $status = preg_replace("/#(\w+)/", "#\\1", $status);
    return $status;
}

O código é simples e pode ser utilizado para substituição de urls em outros links.

Até a próxima!