Necesito hacer que todos los link cargados en un campo de una base al procesarlos les coloque el target blanck, buscando posibilidades di con una funcion armada similar a esta, pero no me funciona correctamente, dado que si ejecuto 2 veces la funcion la seguna vez me rompe el codigo html, ademas desearia que si es un mailto no le agregara el target, pero no logro hacerlo. Espero que alguien pudiera ayudarme a correguir esta funcion. Ademas si me explican mas detalladamente el porque de cada linea me ayudarian aun mas.
Dejo la funcion
Código PHP:
function links_blank( $text )
{
return preg_replace(
array(
'/<a href="?mailto:([^>]*)"?>/i',
'/<a([^>]*) target="?[^"\']+"?/i',
'/<a([^>]+)>/i'
),
array(
'<a href="mailto:\\1">',
'<a\\1',
'<a\\1 target="_blank">',
),
$text
);
}
Muchas gracias.