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

  • Автор темы Автор темы svtol
  • Дата начала Дата начала
Андрейка
Все ок. Кстати рег на десяток кб ничем страшным не является, хотя тут максимум 1-2 килобайта получится в самом крайнем случае.
 
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 незнаю эта функция в symfony выполняет данную задачу отлично, не хотите не юзайте, дело принцыпа
 
Нужно написать регулярку, которая будет искать урл(строка линка) и при этом проверять есть ли по бокам <a блаблабла>и </a>.

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