PHP, если строка содержит URL, изолировать ее

В PHP мне нужно выяснить, содержит ли строка URL. Если есть URL-адрес, мне нужно выделить его как отдельную строку.

Например: «SESAC showin the Love! Http://twitpic.com/1uk7fi»

Мне нужно уметь выделять URL в этой строке в новую строку. В то же время URL-адрес должен быть сохранен в исходной строке. Следить?

Я знаю, что это, наверное, очень просто, но это убивает меня.

Related of "PHP, если строка содержит URL, изолировать ее"

Что-то вроде

preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/?:@=_#&%~,+$]+/', $string, $matches); 

Результат будет равен $matches[0] .

(Примечание: это регулярное выражение, безусловно, не соответствует RFC, оно может получать неверные URL (см. Спецификацию). См. http://www.faqs.org/rfcs/rfc1738.html ).

это не учитывает тире -. необходимо добавить –

 preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/\-?:@=_#&%~,+$]+/', $_POST['string'], $matches); 

URL-адреса не могут содержать пробелы, поэтому …

 \ Б (: HTTPS | FTP?): // \ S +

Должно соответствовать любой URL-подобной вещи в строке.

Вышеприведенное чистое регулярное выражение. PHP preg_ * и правила экранирования строк применяются прежде, чем вы сможете его использовать.

 $test = "SESAC showin the Love! http://twitpic.com/1uk7fi"; $myURL= strstr ($test, "http"); echo $myURL; // prints http://twitpic.com/1uk7fi