Hace poco he estado desarrollando una utilidad para la edición de una newsletter HTML y me he encontrado con un problema interesante. Una vez que tenemos editado el formato, insertadas las imágenes, los links, etc. podemos proceder al envÃo de la newsletter. Pero el problema es que esas imágenes y algunos links tienen rutas relativas, por lo tanto, el programa de correo que reciba el html, no podrá encontrar esos elementos.
Gracias a PHP y la potencia de las expresiones regulares, aquà está la solución:
$str=preg_replace('#(href|src)="([^:"]*)("|(?:(?:%20|\s|\+)[^"]*"))#',
'$1="http://www.ingeniuz.com/$2$3',$str);
La función preg_replace, se encarga de realizar reemplazos en una cadena, siguiendo las instrucciones que se le dan en la expresión regular que toma como argumento.
De esta forma, todas las url contenidas dentro de los atributos src y href son cambiadas (si es necesario) por su forma absoluta.
Via: wintermute
Aunque ya fue hace tiempo, muchas gracias, me salvaste la vida con esas expresiones regulares
De nada Fabian :)