В PHP мне нужно выяснить, содержит ли строка URL. Если есть URL-адрес, мне нужно выделить его как отдельную строку.
Например: «SESAC showin the Love! Http://twitpic.com/1uk7fi»
Мне нужно уметь выделять URL в этой строке в новую строку. В то же время 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