PHP:Convertir URL a enlaces con criterios
De Foros del Web
Tenía que resolver una necesidad que supongo que tienen muchas otras personas. Es, que los usuarios teclean texto que puede contener URLs, y estas URLs deben ser convertidas a enlaces. Otras condiciones eran que:
-La URL introducida podía después tener un intro, un tabulador, un espacio, o un paréntesis.
-Si la URL introducida pertenecía a un dominio externo al de la web en cuestión, éste debía abrirse en una nueva ventana, y si era una URL interna debía abrirse en la ventana actual.
Lo he resuelto así:
Código PHP:
<?php $texto = str_replace("\r", "", $texto); $texto = preg_replace("/(http:\/\/[^(\)|[:space:])]*)\)/", "<a href=\"\\1\" target=\"_blank\">\\1</a>)", $texto); $texto = preg_replace("/(http:\/\/[^([:space:]|\"|\<)]*)[[:space:]]/", "<a href=\"\\1\" target=\"_blank\">\\1</a> ", $texto); $texto = preg_replace("/\<a href=\"(.*zonasiete.*)\" target=\"_blank\"\>/", "<a href=\"\\1\">", $texto); ?>
En este caso, el dominio local es zonasiete.org. Espero que a alguien le sea útil. Por alguna extraña razón, no se muestra bien en mi post el code. Aclaraciones:
< ) -- ahí no hay un espacio, esos dos caracteres van seguidos.
\1 -- Todos los unos (1) van precedidos de doble barra invertida, aunque sólo se muestra una.
--lical 25 May 2003
Este artículo es parte de las FAQs de PHP y el Manual de PHP.
- Indice de las FAQs: Conceptos, Configuración, Formularios, Manejo de Archivos, Integración con Bases de Datos, Sesiones, Extensiones y Librerías, Seguridad, Funciones, Clases y Objetos, Frameworks
- Recomendamos también: Guía Zend, Frameworks PHP, Aceleradores PHP
- Agregar al FAQ: PHP: Instrucciones para agregar una pregunta al FAQ de PHP
- Para preguntas sobre PHP: Foro de Php
