Некоторое время я искал код для извлечения URL-адресов из строки, используя PHP. Я в основном пытаюсь получить сокращенный URL из сообщения, а затем сделать запрос HEAD, чтобы найти фактическую ссылку.
У кого-нибудь есть код, который возвращает URL из строк?
Заранее спасибо.
Редактировать для Ghost Dog:
Вот пример того, что я анализирую:
$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'];
}
Подробнее см. Ответ.