Tema: bbcode php
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/04/2014, 00:00
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: bbcode php

Bueno, eso no das a entender en el código que nos mostraste al principio. Fíjate bien en lo que escribes.

En ese caso, se me ocurre aplicar una expresión regular como esta:

Código PHP:
Ver original
  1. $url = "http://www.google.com";
  2. echo preg_match("/^http(s?):\/\/(\w+\.)?\w+\-?\.\w{2,6}(.*?)$/", $url) ? "<a href = '$url'>$url</a>" : $url;

Lo anterior imprime:

Código HTML:
Ver original
  1. <a href = 'http://www.google.com'>http://www.google.com</a>

La expresión regular, busca en la cadena, coincidencias con una URL clásica, como el "http://" o "https://" del inicio, un posible grupo de caracteres alfanuméricos seguido de un punto (por ejemplo: www.), otro grupo de caracteres alfanuméricos con un posible guion en medio (por ejemplo: mi-dominio), un punto y un conjunto de caracteres alfanuméricos que deben sumar un total mínimo de 2 y máximo 6 caracteres (por ejemplo: .com, .net, .uk). Pero además, dejo abierta la posibilidad de que haya un grupo más, que puede ser la ruta de recurso como en "www.mi-domino.com/libros/ejemplo.php".

DEMO

La expresión regular puede ser más compleja y eficiente, es solo una que se me ocurrió hacer, siendo ya la 1 am en mi país y a punto de irme a dormir.

Si no estás satisfecho con esta, busca otros ejemplos en internet para que puedas dar con una mejor, saludos.

EDITO:

Creo que esto se ajusta más a lo que buscas:

Código PHP:
Ver original
  1. $cadena = "Hola, visita http://www.google.com o http://www.facebook.com ahora mismo";
  2. echo preg_replace("/\b(https?:\/\/(\w+\.)?\w+\-?\.\w{2,6}(.*?))\b/is", "<a href = '$1'>$1</a>", $cadena);

Lo anterior imprime lo siguiente:

Código HTML:
Ver original
  1. Hola, visita <a href = 'http://www.google.com'>http://www.google.com</a> o <a href = 'http://www.facebook.com'>http://www.facebook.com</a> ahora mismo

Había olvidado que la \b, marca el inicio y final de una palabra, por lo tanto, si dentro de esos límites conservaba la expresión, entonces podría crear enlaces por cada URL que se encuentre en un texto.

DEMO

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Última edición por Alexis88; 15/04/2014 a las 00:56 Razón: Mejoré mi algoritmo