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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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:
- Línea 3: en $cadena_origen almaceno los diferentes enlaces que vamos a tratar.
- 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.
- Línea 14: busco que la palabra contenga una @.
- 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.