22 Votos

PHP: Agregar target="_blank" a enlaces HTML (salientes)

Consejo de Stefan Trost | 10/10/2026 a las 19:17

En este tutorial, le muestro una solución PHP para agregar el atributo target="_blank" automáticamente a todos enlaces o solo a todos los enlaces salientes.

Este código se puede utilizar, por ejemplo, para editar automáticamente un texto que un usuario ha introducido en un formulario de comentarios y para garantizar que todos los enlaces (salientes) se abran en una nueva ventana o pestaña y que su propia página permanezca abierta en el navegador incluso cuando un usuario haga clic en uno de estos enlaces.

Agregar el atributo target="_blank" a todos los enlaces

Hacemos uso de la función PHP preg_replace(), que alimentamos con la siguiente expresión regular:

$l = '<a href="https://www.sttmedia.com">';

$l = preg_replace('/(<a href="[^"]+")>/is', '\\1 target="_blank">', $l);

echo $l;  // <a href="https://www.sttmedia.com" target="_blank">

Entonces, buscamos una construcción de enlace que comienza con <a href=" y termina con "> y reemplazamos esta construcción con la cadena coincidente que incluye target="_blank".

Entre las dos comillas dobles después de "href=" puede aparecer un texto arbitrario, en este caso nuestro enlace. El texto que se encuentra entre corchetes, es decir, todo, desde '<a href...' hasta las comillas de cierre ", pero sin el cierre >, se recuperan nuevamente con \\1 en el reemplazo y se insertan junto con ' target="_blank">' en lugar del hit.

Agregar el atributo target="_blank" solo a los enlaces salientes

Suponiendo que todos los enlaces salientes comienzan con "http" o "https" mientras que los enlaces internos no contienen el nombre de dominio completo y se ven algo así como "/pagina-interna.html", "/pagina-interna" o "/interna/pagina.php", podemos expandir nuestro código de la siguiente manera:

$l = preg_replace('/(<a href="http:[^"]+")>/is',  '\\1 target="_blank">', $l);
$l = preg_replace('/(<a href="https:[^"]+")>/is', '\\1 target="_blank">', $l);

Con esto, el atributo sólo se añadirá a los enlaces que remitan a otro sitio web distinto al propio, el resto de enlaces internos permanecerán sin alterar. Mientras los visitantes naveguen dentro del propio dominio, siempre se utiliza la ventana actual del navegador. Tan pronto como van a abandonar el propio dominio, se abre una nueva ventana del navegador. Por supuesto, esto sólo funciona de esta manera si los enlaces internos se especifican en la forma mencionada sin "http" o "https".

ResponderPositivoNegativo

Sobre el Autor

AvatarPuede encontrar software de Stefan Trost en la pagina es.sttmedia.com. ¿Necesita un software individual según sus propios requisitos? Escribenos: es.sttmedia.com/contacto
Ver Perfil

 

Temas Relacionados

MySQL: Saltos de Línea en MySQL

Consejo | 0 Comentarios

CSS: Cómo incluir CSS en HTML

Tutorial | 0 Comentarios

Aviso Importante

Por favor tenga en cuenta: Las contribuciones publicadas en askingbox.com son contribuciones de los usuarios y no deben reemplazar el asesoramiento profesional. No son verificados por independientes y no reflejan necesariamente la opinión de askingbox.com. Aprende más.

Participar

Haga su propia pregunta o escriba su propio artículo en askingbox.com. He aquí cómo.