Обнаружение - заголовок URL и URL

Как определить, есть ли URL в тексте и в заголовке (если есть)?

Если он есть, то он должен изменить URL-адрес:

от 1_

в:

<detected:url="http://stackoverflow.com"/>

Мне также нужно получить заголовки из внешних ссылок, как в этом примере:

<title:http://stackoverflow.com/="the actual title from the stackoverflow"/>

person Lucas    schedule 30.09.2011    source источник
comment
Это зависит. Все URL-адреса начинаются с http? Что указывает заголовок URL?   -  person Explosion Pills    schedule 01.10.2011
comment
@tandu Не совсем, потому что он будет анализировать данные, опубликованные пользователем. Заголовок — это обнаруженный заголовок URL-адреса сайта из тегов ‹title›‹/title›.   -  person Lucas    schedule 01.10.2011
comment
Это должен быть XML? Если это так, это недопустимый XML.   -  person icktoofay    schedule 01.10.2011
comment
@icktoofay Хе-хе, нет, это не XML: p   -  person Lucas    schedule 01.10.2011
comment
Из чего вы обнаруживаете URL-адреса: HTML? XML? Текст?   -  person Nightfirecat    schedule 01.10.2011
comment
@ Лукас, просто вопрос. Почему вы добавили к этому вопросу префикс PHP?   -  person genesis    schedule 01.10.2011
comment
@Nightfirecat Из моей переменной PHP, взятой из базы данных.   -  person Lucas    schedule 01.10.2011
comment
@genesis-φ Потому что мне нужно добавить это в мою функцию PHP. Все должно быть PHP, поэтому я думаю, что это хороший префикс.   -  person Lucas    schedule 01.10.2011
comment
@Lucas: Для этого и нужны теги, хорошо?   -  person genesis    schedule 01.10.2011


Ответы (1)


Это для случая с одним URL:

$url = "http://www.stackoverflow.com/";

$check_result = get_detected_and_title( $url );


function get_detected_and_title( $url )
{
    $detected = '<detected:url="'.$url.'"/>';
    $title = '';
    $tmp_html = file_get_contents( $url );
    preg_match('/<title>(.*)<\/title>/', $tmp_html, $res);
    $title = '<title:'.$url.'="'.$res[1].'"/>';

    return array( $detected, $title );
}

На самом деле, просмотрев страницы SO, я думаю, что это более близко к тому, что вы ищете. Хотя это требует некоторой настройки: Как имитировать поведение автосвязывания StackOverflow

person ariefbayu    schedule 01.10.2011