Умное преобразование линков

Андрейка

Senior pomidor developer
WP
ну дык поправь плиз правильнуюрегулярку(тм), потом бум дальше думать)
 

WP

^_^
Андрейка
Все ок. Кстати рег на десяток кб ничем страшным не является, хотя тут максимум 1-2 килобайта получится в самом крайнем случае.
 

Nest

Новичок
PHP:
  define('SF_AUTO_LINK_RE', '~
    (                       # leading text
      <\w+.*?>|             #   leading HTML tag, or
      [^=!:\'"/]|           #   leading punctuation, or
      ^                     #   beginning of line
    )
    (
      (?:https?://)|        # protocol spec, or
      (?:www\.)             # [url]www.*[/url]
    )
    (
      [-\w]+                   # subdomain or domain
      (?:\.[-\w]+)*            # remaining subdomains or domain
      (?::\d+)?                # port
      (?:/(?:(?:[\~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path
      (?:\?[\w\+%&=.;-]+)?     # query string
      (?:\#[\w\-]*)?           # trailing anchor
    )
    ([[:punct:]]|\s|<|$)    # trailing text
   ~x');

function _auto_link_urls($text)
{

  return preg_replace_callback(
    SF_AUTO_LINK_RE,
    create_function('$matches', '
      if (preg_match("/<a\s/i", $matches[1]))
      {
        return $matches[0];
      }
      else
      {
        return $matches[1].\'<a href="\'.($matches[2] == "www." ? "http://www." : $matches[2]).$matches[3].\'">\'.$matches[2].$matches[3].\'</a>\'.$matches[4];
      }
    ')
  , $text);
}
Вариант из symfony framework
 

WP

^_^
Вопрос о курении остается открытым... это не вариант.
 

Nest

Новичок
WP незнаю эта функция в symfony выполняет данную задачу отлично, не хотите не юзайте, дело принцыпа
 

Quessir

Новичок
Нужно написать регулярку, которая будет искать урл(строка линка) и при этом проверять есть ли по бокам <a блаблабла>и </a>.

Сорри, я забыл посмотреть остальные страницы. :)
 

WP

^_^
Quessir
Ну дык я уже все написал, все отлично работает в последнем примере. Но ты не совсем прав, надо <a> выбирать, а не смотреть.
 
Сверху