テキストの文字列から URL の配列を取得する方法を見つけようとしています。テキストは次のようにフォーマットされます。
ここにランダムなテキストがあります
http://techcrunch.com/2012/07/20/last-day-to-purchase-extra-early-bird-tickets-for-disrupt-sf/
明らかに、これらのリンクは何でもかまいません (そして、多くのリンクが存在する可能性があります。それらは、現在テストしているものにすぎません。正規表現のような単純な URL を使用すると、正常に動作します。
私は使っている:
preg_match_all('((https?|ftp|gopher|telnet|file|notes|ms-help):'.
'((//)|(\\\\))+[\w\d:#@%/;$()~_?\+-=\\\.&]*)',
$bodyMessage, $matches, PREG_PATTERN_ORDER);
私print_r( $matches);
が得る結果は次のとおりです。
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=
)
...
その配列内のこれらのアイテムはどれも、上記のリンクからの完全なリンクではありません。
必要なものを取得する良い方法を知っている人はいますか? PHPのリンクを取得するための正規表現をたくさん見つけましたが、どれも機能しません。
ありがとう!
編集:
わかりましたので、これらのリンクを電子メールから取得します。スクリプトは電子メールを解析し、メッセージの本文を取得してから、そこからリンクを取得しようとします。メールを調べたところ、何らかの理由で URL の途中にスペースが追加されているようです。これは、私の 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
URL を壊さないようにする方法について何か提案はありますか?
編集2
ローネットの提案に従って、次のコードを実行しました。
$bodyMessage = str_replace("= ", "",$bodyMessage);
ただし、それをエコーすると、「=」を置き換えたくないようです
--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