регулярка преобразования урл

A
На сайте с 04.10.2012
Offline
15
456

Доброго времени суток, нашёл в интернете регулярку, которая находит ссылки на странице.

Собственно вот:

public static function EncodeUrls($string) {

$preg_autolinks = array(

'pattern' => array(

"'[\w\+]+://[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+'si",

"'([^/])(www\.[A-z0-9\.\?\+\-/_=&%#:;]+[\w/=]+)'si",

),

'replacement' => array(

'$0',

'$2',

));

$search = $preg_autolinks['pattern'];

$replace = $preg_autolinks['replacement'];

$string = preg_replace($search, $replace, $string);

return $string;

}

Всё бы ничего , но если на вход попадает текст, в котором идет перевод строки (\n) и потом ссылка, то в попадает не / а n/
Подскажите пожалуйста как быть

siv1987
На сайте с 02.04.2009
Offline
427
#1

А вы уверены что проблема именно в регулярке?

A
На сайте с 04.10.2012
Offline
15
#2

Да, а в чём же ещё

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#3

ну сделайте:

return trim($string);

поможет?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
A
На сайте с 04.10.2012
Offline
15
#4

Неа, нужно сделать так чтобы этот перевод строки не включался в bb код, а не исключался вообще

siv1987
На сайте с 02.04.2009
Offline
427
#5
Agronya:
Неа, нужно сделать так чтобы этот перевод строки не включался в bb код, а не исключался вообще

'$2'

заменить на '$1$2'

Для ссылок с http:// вообще перевод не должен захватываться.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий