Замена любой ссылки в посте

Идеи для расширения функциональности phpBB 2.0.x
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 19 лет 9 месяцев
Откуда: с Луны свалил...

Замена любой ссылки в посте

Сообщение edgar »

Хотелось бы, чтобы любая ссылка в посте заменялась на текстовую ссылку по умолчанию...

Если пользователь постит линк www.ya.ru

то это автоматом заменяется на ссылка

Код: Выделить всё

[url=www.ya.ru][u][color=red]ссылка[/color][/u][/url] 
(ну или другой установленный админом текст с форматированием)

Но если пользователь постит

Код: Выделить всё

[url=http://url]текст ссылки пользователя[/url]

тогда остается как есть

Это бы было полезно и когда ссылка длинная и появляется скрол
Вообще сложно такую штуку сделать?
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

Сообщение quazi »

нет. не сложно
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 19 лет 9 месяцев
Откуда: с Луны свалил...

Сообщение edgar »

Тогда отлично. :)
Кто возьмется написать такой мод за оплату, просьба сообщить цену здесь или в ПМ
Аватара пользователя
VVVas
Former team member
Сообщения: 4463
Стаж: 20 лет 5 месяцев
Поблагодарили: 1 раз

Сообщение VVVas »

edgar
В общем мод у меня не получатеся пока так как я бы хотел. То бишь функции которые надо применить я знаю, но почему они не работают у меня - не знаю я php. Но минимально я думаю у тебя всё получиться. А там может кто и поможет.

bbcode.php

Код: Выделить всё

	// We do URLs in several different ways..
	$bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url1']);

	$bbcode_tpl['url2'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', '\\1', $bbcode_tpl['url2']);
заменяем на

Код: Выделить всё

	// We do URLs in several different ways..
	$bbcode_tpl['url1'] = str_replace('{URL}', '\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url1'] = str_replace('{DESCRIPTION}', 'link', $bbcode_tpl['url1']);

	$bbcode_tpl['url2'] = str_replace('{URL}', 'http://\\1', $bbcode_tpl['url']);
	$bbcode_tpl['url2'] = str_replace('{DESCRIPTION}', 'link', $bbcode_tpl['url2']);
и

Код: Выделить всё

	// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
	// xxxx can only be alpha characters.
	// yyyy is anything up to the first space, newline, comma, double quote or <
	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">\\2</a>", $ret);

	// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
	// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
	// zzzz is optional.. will contain everything up to the first space, newline, 
	// comma, double quote or <.
	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>", $ret);
заменяем на

Код: Выделить всё

	// matches a "www|ftp.xxxx.yyyy[/zzzz]" kinda lazy URL thing
	// Must contain at least 2 dots. xxxx contains either alphanum, or "-"
	// zzzz is optional.. will contain everything up to the first space, newline, 
	// comma, double quote or <.
	$ret = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"http://\\2\" target=\"_blank\">link</a>", $ret);

	// matches an "xxxx://yyyy" URL at the start of a line, or after a space.
	// xxxx can only be alpha characters.
	// yyyy is anything up to the first space, newline, comma, double quote or <
	$ret = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", "\\1<a href=\"\\2\" target=\"_blank\">link</a>", $ret);
Добавлено спустя 3 минуты 27 секунд:

С использованием языкового файла не забавлялся, так что ничего не скажу - работает или нет.
Была идея обрезать в линке до 25 символов и писать "ссылка на и_обрезанный_до_25_символов_линк". Но внутри preg_replace у меня ничего не получилось, а в первом месте не пробовал.

Добавлено спустя 4 минуты 1 секунду:

Вроде нигде не ошибся.
я люблю daft punk | новый sugoi.ru
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 19 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

VVVas писал(а):Была идея обрезать в линке до 25 символов и писать "ссылка на и_обрезанный_до_25_символов_линк". Но внутри preg_replace у меня ничего не получилось, а в первом месте не пробовал.
Можно использовать

Код: Выделить всё

## MOD Title: Chunk Long URLs
## MOD Author: Joe Belmaati < belmaati@gmail.com > (Joe Belmaati) N/A 
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html

Вернуться в «Запросы модов для phpBB 2.0.x»