На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: ALXR, Pr0[)!9Y, Profi
  
    > Обрамление текстовых сcылок тегом <a>
      Написал регулярку, которая ищет и обрамляет текстовые ссылки тегом <a>, но регулярка захватывает рядом стоящие точки, запятые, это при случае если рядом с текстовой ссылкой идут эти символы. Фтп ссылок не будет, поэтому я не учел в регулярке. Мой пример можно посмотреть здесь - http://rubular.com/r/P04ZNa9Td6. Прошу помочь мне исправить этот момент. Благодарю!
        Видимо, придётся явно указать символы, которые могут находиться в URL. И усложнить выражение, чтобы не допускать точку в конце URL
        FTP-ссылки при необходимости включить проще простого - достаточно заменить https? на (https?|ftp)
        Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
          Цитата amk @
          Видимо, придётся явно указать символы, которые могут находиться в URL. И усложнить выражение, чтобы не допускать точку в конце URL

          еще поковыряю

          Цитата amk @
          FTP-ссылки при необходимости включить проще простого - достаточно заменить https? на (https?|ftp)

          это да, но задачи такой нет
            Можно сразу после \S+ добавить [\w\/]:
            ExpandedWrap disabled
              ((https?\:\/\/|www\.)\S+[\w\/])
              Цитата AVA12 @
              Можно сразу после \S+ добавить [\w\/]:
              ExpandedWrap disabled
                ((https?\:\/\/|www\.)\S+[\w\/])

              Спасибо за мысль! подправил - http://rubular.com/r/scnXrKGPa0

              ExpandedWrap disabled
                preg_replace_callback("/(((?:ht|f)tps?\:\/\/|www\.)\S+\w\/?)/i", "hrefCallback", $input);

              1. Решил все таки добавить ФТП
              2. Ваш пример [\w\/] заменил на \w\/?, корректно сделал или лучше [\w\/]?
              3. Match выдает по 2 элемента в каждом массиве, если убрать ?: перед ht, то будет 3, не понятно почему, я где-то подсмотрел и дописал ?: дабы убрать лишний элемент. Верно ли я сделал? Инфы по данному "хаку" не нашел, почему удалось излечить.
              Сообщение отредактировано: TetRis -
                2. Да, так, пожалуй, лучше.
                3. Не понял, в чем вопрос. Это не хак, а вполне документированный синтаксис PCRE, (...) означает захватывающую подмаску, (?:...) незахватывающую.
                  Цитата AVA12 @
                  2. Да, так, пожалуй, лучше.

                  [\w\/] или \w\/?, а то маленькая путаница вышла, можно понять по разному

                  Цитата AVA12 @
                  незахватывающую

                  спасибо, это я и хотел узнать
                  Сообщение отредактировано: TetRis -
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script Execution time: 0,0754 ]   [ 14 queries used ]   [ Generated: 19.01.20, 13:13 GMT ]