Obtener todas las direcciones URL en una cadena con PHP
Estoy tratando de encontrar una manera de obtener una matriz de URL de una cadena de texto. El texto tendrá un formato similar al siguiente:
Un texto al azar aquí
http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tickets-for-disrupt-sf/
Obviamente, esos enlaces pueden ser cualquier cosa (y puede haber muchos enlaces, esos son solo los que estoy probando ahora. Si uso una URL simple como mi regex, funciona bien.
Estoy usando:
preg_match_all('((https?|ftp|gopher|telnet|file|notes|ms-help):'.
'((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)',
$bodyMessage, $matches, PREG_PATTERN_ORDER);
Cuando hago unprint_r( $matches);
El resultado que obtengo es:
Array ( [0] => Array (
[0] => http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphon=
[1] => http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tick=
[2] => http://techcrunch.co=
[3] => http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-ip=
[4] => http://techcrunch.com/2012/07/20/last-day-to-purc=
[5] => http://tec=
)
...
Ninguno de esos elementos en esa matriz son enlaces completos de los enlaces anteriores.
¿Alguien sabe de una buena manera de conseguir lo que necesito? He encontrado un montón de cosas de expresiones regulares para obtener enlaces para PHP, pero ninguno de ellos funciona.
¡Gracias!
Editar:
Ok, así que estoy sacando estos enlaces de un correo electrónico. La secuencia de comandos analiza el correo electrónico, toma el cuerpo del mensaje y luego trata de capturar los enlaces. Después de investigar el correo electrónico, aparece como si, por alguna razón, se agregara un espacio en medio de la URL. Aquí está la salida del mensaje del cuerpo como se ve en mi script PHP.
--00248c711bb99ca36d04c54ba5c6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphon= es-bezel-a-massive-notification-light/?grcc=3D88888Z0ZwdgtZ0Z0Z0Z0Z0&grcc2= =3D835637c33f965e6cdd34c87219233711~1342828462249~fca4fa8af1286d8a77f26033f= deed202~510f37324b14c50a5e9121f955fac3fa~1342747216490~0~0~0~0~0~0~0~0~7~3~ http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tick= ets-for-disrupt-sf/ --00248c711bb99ca36d04c54ba5c6 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
¿Alguna sugerencia sobre cómo hacer que no se rompa la URL?
Editar 2
Según la sugerencia de Laurnet, corrí este código:
$bodyMessage = str_replace("= ", "",$bodyMessage);
Sin embargo, cuando hago eco de eso, no parece querer reemplazar "="
--00248c711bb99ca36d04c54ba5c6 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphon= es-bezel-a-massive-notification-light/?grcc=3D88888Z0ZwdgtZ0Z0Z0Z0Z0&grcc2= =3D835637c33f965e6cdd34c87219233711~1342828462249~fca4fa8af1286d8a77f26033f= deed202~510f37324b14c50a5e9121f955fac3fa~1342747216490~0~0~0~0~0~0~0~0~7~3~ http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tick= ets-for-disrupt-sf/ --00248c711bb99ca36d04c54ba5c6 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable