Obter todos os urls em uma string com php
Eu estou tentando descobrir uma maneira de obter uma matriz de URLs de uma seqüência de texto. O texto será um pouco formatado assim:
Algum texto aleatório aqui
http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tickets-for-disrupt-sf/
Obviamente, esses links podem ser qualquer coisa (e pode haver muitos links, esses são apenas os que eu estou testando agora. Se eu usar uma URL simples como o meu regex funciona bem).
Estou usando:
preg_match_all('((https?|ftp|gopher|telnet|file|notes|ms-help):'.
'((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)',
$bodyMessage, $matches, PREG_PATTERN_ORDER);
Quando eu faço umprint_r( $matches);
o resultado que obtenho é:
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=
)
...
Nenhum desses itens nessa matriz são links completos dos links acima.
Alguém sabe de uma boa maneira de conseguir o que eu preciso? Eu encontrei um monte de coisas regex para obter links para o PHP, mas nada disso funciona.
Obrigado!
Editar:
Ok, então eu estou puxando esses links de um e-mail. O script analisa o email, pega o corpo da mensagem e tenta pegar os links. Depois de investigar o email, parece que, por algum motivo, é adicionado um espaço no meio da URL. Aqui está a saída da mensagem do corpo como visto pelo meu 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
Alguma sugestão de como não quebrar os URLs?
EDIT 2
De acordo com a sugestão de Laurnet, eu corri este código:
$bodyMessage = str_replace("= ", "",$bodyMessage);
No entanto, quando eu ecoar isso, não parece querer substituir "="
--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