PHP, если строка содержит URL изолировать его - PullRequest
1 голос
/ 06 июня 2010

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

Например: "SESAC показывает в любви! http://twitpic.com/1uk7fi"

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

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

Ответы [ 4 ]

8 голосов
/ 06 июня 2010

Что-то вроде

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

$matches[0] будет содержать результат.

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

2 голосов
/ 31 января 2012

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

preg_match('/[a-zA-Z]+:\/\/[0-9a-zA-Z;.\/\-?:@=_#&%~,+$]+/', $_POST['string'], $matches);
0 голосов
/ 06 июня 2010

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

\b(?:https?|ftp)://\S+

Должно соответствовать любому URL-подобному элементу в строке.

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

0 голосов
/ 06 июня 2010
$test = "SESAC showin the Love! http://twitpic.com/1uk7fi";
$myURL= strstr ($test, "http");
echo $myURL; // prints http://twitpic.com/1uk7fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...