Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[98.84.18.52] |
|
Сообщ.
#1
,
|
|
|
Написал регулярку, которая ищет и обрамляет текстовые ссылки тегом <a>, но регулярка захватывает рядом стоящие точки, запятые, это при случае если рядом с текстовой ссылкой идут эти символы. Фтп ссылок не будет, поэтому я не учел в регулярке. Мой пример можно посмотреть здесь - http://rubular.com/r/P04ZNa9Td6. Прошу помочь мне исправить этот момент. Благодарю!
|
Сообщ.
#2
,
|
|
|
Видимо, придётся явно указать символы, которые могут находиться в URL. И усложнить выражение, чтобы не допускать точку в конце URL
FTP-ссылки при необходимости включить проще простого - достаточно заменить https? на (https?|ftp) |
Сообщ.
#3
,
|
|
|
Цитата amk @ Видимо, придётся явно указать символы, которые могут находиться в URL. И усложнить выражение, чтобы не допускать точку в конце URL еще поковыряю Цитата amk @ FTP-ссылки при необходимости включить проще простого - достаточно заменить https? на (https?|ftp) это да, но задачи такой нет |
Сообщ.
#4
,
|
|
|
Можно сразу после \S+ добавить [\w\/]:
((https?\:\/\/|www\.)\S+[\w\/]) |
Сообщ.
#5
,
|
|
|
Цитата AVA12 @ Можно сразу после \S+ добавить [\w\/]: ((https?\:\/\/|www\.)\S+[\w\/]) Спасибо за мысль! подправил - http://rubular.com/r/scnXrKGPa0 preg_replace_callback("/(((?:ht|f)tps?\:\/\/|www\.)\S+\w\/?)/i", "hrefCallback", $input); 1. Решил все таки добавить ФТП 2. Ваш пример [\w\/] заменил на \w\/?, корректно сделал или лучше [\w\/]? 3. Match выдает по 2 элемента в каждом массиве, если убрать ?: перед ht, то будет 3, не понятно почему, я где-то подсмотрел и дописал ?: дабы убрать лишний элемент. Верно ли я сделал? Инфы по данному "хаку" не нашел, почему удалось излечить. |
Сообщ.
#6
,
|
|
|
2. Да, так, пожалуй, лучше.
3. Не понял, в чем вопрос. Это не хак, а вполне документированный синтаксис PCRE, (...) означает захватывающую подмаску, (?:...) незахватывающую. |
Сообщ.
#7
,
|
|
|
Цитата AVA12 @ 2. Да, так, пожалуй, лучше. [\w\/] или \w\/?, а то маленькая путаница вышла, можно понять по разному Цитата AVA12 @ незахватывающую спасибо, это я и хотел узнать |