少し前から、PHPを使用してURLを文字列から取得するコードを探してきました。私は基本的に、メッセージから短縮URLを取得しようとしており、その後、実際のリンクを見つけるHEADリクエストを行います。文字列からURLを取得する
誰もが文字列からURLを返すコードを持っていますか?
ありがとうございます。ゴースト・ドッグ用
編集:ここでは
は私が解析しています何のサンプルです:
$test = "I am testing this application for http://test.com YAY!";
そして、ここでは、私はそれを解決してしまったの応答は次のようになります。
$regex = '$\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]$i';
preg_match_all($regex, $string, $result, PREG_PATTERN_ORDER);
$A = $result[0];
foreach($A as $B)
{
$URL = GetRealURL($B);
echo "$URL<BR>";
}
function GetRealURL($url)
{
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_ENCODING => "",
CURLOPT_USERAGENT => "spider",
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 10,
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
return $header['url'];
}
詳細についての回答を参照してください。あなたが正確に何をしたい得るためにチューニングする正規表現をする必要があります
$matches = array();
preg_match_all('/http:\/\/[a-zA-Z0-9.-]+\/[a-zA-Z0-9.-]+/', $text, $matches);
print_r($matches);
:よう
あなたはあなたの – ghostdog74