Detectar enlaces y links en una cadena de texto con PHP

Vamos a ver cómo detectar enlaces y links de una cadena de texto con PHP mediante un sencillo script. En las cadenas analizadas contaremos con enlaces con www, http://, https://, hashtag de twitter y perfiles de twitter.

PHP es un lenguaje muy potente con el que podemos manipular, formatear y operar con cadenas de texto muy fácilmente.

Ejemplo para detectar enlaces y links en una cadena con PHP preg_replace()

En la siguiente demo de ejemplo podéis ver en funcionamiento el código puesto bajo estas líneas. La función usada para la detección y sustitución ha sido PHP preg_replace().

La cadena que vamos a tener es la siguiente: http://www.anerbarrena.com https://www.facebook.com www.google.es @anerbarrena #anerbarrena.

Este es el código fuente de la demo para detectar los links:

echo '<h3>Cadena original sin filtrar:</h3>';
//cadena origen con los enlaces sin detectar
$cadena_origen= 'https://www.anerbarrena.com https://www.facebook.com www.google.es @anerbarrena #anerbarrena';

echo $cadena_origen;

//filtro los enlaces normales
$cadena_resultante= preg_replace("/((http|https|www)[^\s]+)/", '<a href="$1">$0</a>', $cadena_origen);
//miro si hay enlaces con solamente www, si es así le añado el https://
$cadena_resultante= preg_replace("/href=\"www/", 'href="https://www', $cadena_resultante);
echo '<h3>Cadena filtrada con enlaces normales:</h3>'.$cadena_resultante;

//saco los enlaces de twitter
$cadena_resultante = preg_replace("/(@[^\s]+)/", '<a target=\"_blank\"  href="http://twitter.com/intent/user?screen_name=$1">$0</a>', $cadena_resultante);
$cadena_resultante = preg_replace("/(#[^\s]+)/", '<a target=\"_blank\"  href="http://twitter.com/search?q=$1">$0</a>', $cadena_resultante);
echo '<h3>Cadena filtrada con enlaces de Twitter:</h3>'.$cadena_resultante;

Detallo cada Línea:

  1. Línea 3: en $cadena_origen almaceno los diferentes enlaces que vamos a tratar.
  2. Líneas 8 y 10: detecto que la cadena tenga http, https o www, si encuentro este patrón entiendo que es una url y formo el enlace.
  3. Línea 14: busco que la palabra contenga una @.
  4. Línea 15: busco que la palabra contenga una #.

Espero que os haya sido de utilidad este tutorial de PHP para detectar links en una cadena de texto.

compartir
Publicado por
Aner Barrena
Tags: script