Найти ссылки в строке - PullRequest
       10

Найти ссылки в строке

0 голосов
/ 09 декабря 2011

Я нашел страницу со списком регулярных выражений, которые проверяют действительные URL.http://mathiasbynens.be/demo/url-regex

Один из Диего Пернини кажется лучшим выбором.https://gist.github.com/729294

Теперь я просто не могу заставить это регулярное выражение работать с поиском URL-адреса в строке.

Я хочу выделить URL-адрес в этой строке:

$string = 'Really digging new the twitter design! http://t.co/71dEuIY8';

Это регулярное выражение дает мне 0

preg_match_all('%^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@|\d{1,3}(?:\.\d{1,3}){3}|(?:(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)(?:\.(?:[a-z\d\x{00a1}-\x{ffff}]+-?)*[a-z\d\x{00a1}-\x{ffff}]+)*(?:\.[a-z\x{00a1}-\x{ffff}]{2,6}))(?::\d+)?(?:[^\s]*)?$%iu', $string, $match);

Это соответствует действительному URL, когда я использую строку, содержащую только URL:

$string = 'http://t.co/71dEuIY8';

Как настроить это регулярное выражение длявыделить действительный или URL-адрес в строке, содержащей не только URL-адрес?

1 Ответ

1 голос
/ 09 декабря 2011

Ваша проблема - ^ в начале и $ в конце.Это означает, что ссылка должна начинаться и заканчиваться таким образом.Вот почему он соответствует изолированной ссылке, но не в строке.

...