Formatear Urls en comentarios de un blog con PHP

Es habitual tener sistemas de comentarios en nuestras páginas y blogs, ya sean propios o de terceros, que insertan los comentarios de los usuarios en modo de texto, de forma que cuando estos introducen una url o link, este no es clickable. De hay que sea buena idea formatear/parsear esas urls para convertirlas en links.

Tenemos dos posibles vías de hacerlo, una es grabar el comentario en la Base de Datos con los links formateados y otra es grabarlo tal cual lo pusieron y a la hora de mostrarlo, formatear los links, en ambos casos hay que procesar el texto del comentario para detectar enlaces y convertirlos.

Para ello, propongo el siguiente código, que si bien se puede condensar en menos líneas, lo muestro a pasos por cuestiones didácticas:

$reg_exUrl = "/((((http|https)\:\/\/)|www\.)[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,4}(\/\S*)?)/";
        
$comentario =  preg_replace( $reg_exUrl, "<a rel='nofollow' href=\"$1\">$1</a> ", $comentario );
        
$comentario = str_replace("<a rel='nofollow' href=\"www", "<a rel='nofollow' href=\"http://www", $comentario);
$comentario = str_replace(">http://", ">", $comentario);
$comentario = str_replace(">https://", ">", $comentario);
$comentario = str_replace(">www.", ">", $comentario);
$comentario = str_replace("%20", " ", $comentario);    

Comenzamos con una expresión regular que nos identifica en el texto las partes que cumplan el patrón de una url, para acto seguido introducir por delante y detrás de esas partes el etiquetado típico de un link.

El link lo fijamos como rel=’nofollow’, ya que es un sistema de comentarios, mucha gente sólo escribe para promocionar sus webs, y no es necesario estar cediendo PageRank a infinidad de páginas que ni conocemos personalmente.

La 3ª línea la ponemos para evitar urls que no incorporen http:// delante, pues de lo contrario y dependiendo de la programación de cada web, es posible que al hace click al link, este intentase cargarse desde la url relativa desde donde se muestra, lo cual no es precisamente lo que se desea.

Las 4 últimas líneas son sólo para embellecer el texto del enlace mostrado, es decir, cuestiones meramente estéticas, quitarle el inicio de la url y poner espacios en vez de su equivalente %20

Y así nos quedaría un link una vez formateado:

enlace-formateado-comentario

 

531 visitas.

8 comentarios sobre “Formatear Urls en comentarios de un blog con PHP

  1. Hi,

    Do you know that your WordPress site muchocodigo.com is very slow to load and that you lose visitors, leads and customers every day?

    We have already optimized more than 2000 sites since 2015, why not yours? : http://swella.xyz/AoECM

    Best Regards,

    Alton

  2. want to test drive hidden automation tools to build your business?

    It allows you to automate your earnings, quickly and easily, and it works great. Try it here: smartautomationtools.com

    The terrible news is that you are seriously missing out right now by not using it…

    Kind regards

    P.S.: A brand new tool has just been added to smartautomationtools.com

  3. World’s Best Neck Massager Get it Now 50% OFF + Free Shipping!

    Wellness Enthusiasts! There has never been a better time to take care of your neck pain!
    Our clinical-grade TENS technology will ensure you have neck relief in as little as 20 minutes.

    Get Yours: https://hineck.shop

    Best,

    Carlo
    Compartiendo codigo… – Programación y ejemplos de código

  4. I recently discovered a few tools that allow you to setup bots that sell products in a FULLY automated way.
    It’s all being taught inside this new training program called, “AI Profits”
    https://myaiprofit.com
    The best part is that you don’t have to be an expert or do much more than click a few buttons to get started.
    -Chase

  5. I recently discovered a few tools that allow you to setup bots that sell products in a FULLY automated way.
    It’s all being taught inside this new training program called, “AI Profits”
    https://myaiprofit.com
    The best part is that you don’t have to be an expert or do much more than click a few buttons to get started.
    -Chase

Deja una respuesta

Tu dirección de correo electrónico no será publicada.