Holen Sie sich alle URLs in einem String mit PHP

Ich versuche, einen Weg zu finden, um eine Reihe von URLs aus einer Zeichenfolge von Text zu erhalten. Der Text wird wie folgt formatiert:

Irgendein zufälliger Text hier oben

http://techcrunch.com/2012/07/20/kickstarter-flashr-wants-to-make-the-iphones-bezel-a-massive-notification-light/?grcc=88888Z0ZwdgtZ0Z0Z0Z0Z0&grcc2=835637c33f965e6cdd34c87219233711~1342828462249~fca4fa8af1286d8a77f26033fdeed202~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-tickets-for-disrupt-sf/

Offensichtlich können diese Links alles sein (und es können viele Links sein, das sind nur die, mit denen ich gerade teste. Wenn ich eine einfache URL verwende, funktioniert mein regulärer Ausdruck einwandfrei.

Ich benutze:

preg_match_all('((https?|ftp|gopher|telnet|file|notes|ms-help):'.
    '((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)',
    $bodyMessage, $matches, PREG_PATTERN_ORDER);

Wenn ich aprint_r( $matches); Das Ergebnis ist:

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=
)
...

Keines dieser Elemente in diesem Array ist ein vollständiger Link von den obigen Links.

Kennt jemand einen guten Weg, um zu bekommen, was ich brauche? Ich habe ein paar reguläre Ausdrücke gefunden, um Links für PHP zu bekommen, aber keines davon funktioniert.

Vielen Dank!

Bearbeiten:

Ok, also ziehe ich diese Links aus einer E-Mail. Das Skript analysiert die E-Mail, erfasst den Nachrichtentext und versucht dann, die Links daraus zu ermitteln. Nach der Untersuchung der E-Mail sieht es so aus, als wäre es aus irgendeinem Grund so, als würde ein Leerzeichen in der Mitte der URL eingefügt. Hier ist die Ausgabe der Body-Nachricht, wie sie von meinem PHP-Skript angezeigt wird.

 --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 

Irgendwelche Vorschläge, wie man die URLs nicht kaputt macht?

BEARBEITEN 2

Gemäß Laurnets Vorschlag habe ich diesen Code ausgeführt:

 $bodyMessage = str_replace("= ", "",$bodyMessage);

Wenn ich das jedoch wiederhole, scheint es nicht zu wollen, "=" zu ersetzen.

 --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 

Antworten auf die Frage(2)

Ihre Antwort auf die Frage