извлечение ссылки из текста - PullRequest
0 голосов
/ 04 мая 2009

Как мне раздеть URL-адрес и вернуть его в то же положение?

Ответы [ 5 ]

6 голосов
/ 04 мая 2009

Используйте регулярные выражения. Вы можете легко определить URL с помощью регулярных выражений.

Обнаружение URL

Замена шаблона

1 голос
/ 04 мая 2009

Существует не так много способов регулярного выражения URL, который соответствует rfc3986

Как строка C, регулярное выражение будет:

"^(([^:/?#]+):)?(//([^/?#]*)|///)?([^?#]*)(\\?[^#]*)?(#.*)?"
enum {
    URL = 0,
    SCHEME_CLN = 1,
    SCHEME  = 2,
    DSLASH_AUTH = 3,
    AUTHORITY = 4,
    PATH    = 5,
    QUERY   = 6,
    FRAGMENT = 7
};

Где перечисление обозначает, какие индексы захвата соответствуют каким частям URL.

0 голосов
/ 04 мая 2009

У Джеффа Этвуда было информационное сообщение о проблемах, с которыми вы можете столкнуться.

Независимо от языка программирования и библиотек, которые вы используете, у вас будут проблемы в некоторых случаях, например, - http://www.codinghorror.com/blog/archives/001181.html-- при использовании простой замены регулярных выражений.

Я не очень часто использую PHP, но проблема сводится к попытке выяснить шаблон для использования в вызове preg_replace .

0 голосов
/ 04 мая 2009

вы, вероятно, ищете [preg_replace_callback] (http://www.php.net. /preg_replace_callback).

он просто соответствует шаблону регулярного выражения, возвращает результат функции, которую вы предоставляете, и заменяет исходное совпадение его возвращаемым значением.

0 голосов
/ 04 мая 2009

Если вы хотите вернуть тот же URL в исходное положение, почему вы хотите удалить его в первую очередь / что именно вы пытаетесь сделать. Еще немного контекста поможет нам помочь вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...