Reemplazando el enlace de texto como enlace con preg_replace
Parece que tengo un problema al reemplazar un enlace de texto con un enlace al sitio publicado, no está enlazando.
El código:
$status_text = preg_replace('#(\A|[^=\]\'"a-zA-Z0-9])(http[s]?://(.+?)/[^()<>\s]+)#i', '\\1<a href="\\2">\\3</a>', $status_text);
echo $status_text;
$status_text
se extrae de un campo MySQL llamadocontents
, y contiene otro texto, pero me gustaría enlazar el enlace.Adicionalmente, también me gustaría que no se muestre la URL completa, solo el dominio principal.
ACTUALIZACIÓN: Tenemos otros dos preg_replaces en la misma página, buscando cosas con + y # en frente de ellos que enlazan a áreas del sitio, actualmente funcionan y no deben entrar en conflicto con lo anterior:
$status_text = preg_replace("/#([a-z_0-9]+)/i", "<a href=\"http://url.com/hashlink/$1\">$0</a>", $status_text);
$status_text = preg_replace("/\+([a-z_0-9]+)/i", "<a href=\"http://url.com/pluslink/$1\">$0</a>", $status_text);