TorSav
User
- TP version
- other
После того, как вчера Беломохорочка (наш любимчик), осуществил мою мечту в теме: https://torrentpier.com/threads/bb-code-redaktor-kak-sdelat-ssylku-bez-domena.42306/ Я продолжил возится со своим сайтом. Но тут появилась одна хитрость.
Раньше я размещал скриншоты под спойлером просто в тегах img. На разных торент трекерах, владельцы, любят иметь каждых свой вид названий тем. Я выбрал с квадратными скобками. Далее, что бы особо не мудрить с именами папок и фотохостингами. Просто закидывал папки с фотками, с именами тем на форуме, себе на сайт (естественно с квадратными скобками). И все работало хорошо.
Потом я решил создать новую раздачу с фотками. Для этого под спойлером нужно было уже размещать не криншоты, а кликабельное превью. Для этого использовал код:
После чего ссылка после сохранения сообщения, обрезалась до вида:
Аказывается.
- Раньше мне успешно удавалось писать [ ] в именах папок. Потому, что закрывающий тег [/img] ищется как одно целое вместе со скобкой.
- А в случае с url дело обстоит хитрее. Если закрывающую скобку писать после знака равно. То в регулярном выражении, просто будет найдено первое совпадение. Да! И это будет скобка из имени папки, а не тэга правее.
Лечится так (сам придумал):
После последней строки вставить изменненые две последние строки, добавив двойные кавычки с экранированием.
И добавлять двойные кавычки, обязательно в тех ссылках, где есть квадратная закрывающаяся кавычка. Другие ссылки можно писать без кавычек, по прежнему.
А еще я на форуме заметил тему про оптимизацию. И вот это счасливое лицо =>
Кажется, как раз в ней разбирается и занимается. Я прям аж пожалел, что при регистрации не указал ник своей учетной записи как: "Оптимизатор". Ведь оптимизация из меня аж прет! Наверняка можно было бы написать, что то в виде этого, в одну строку:
Хотя я это не проверял и толком не разбераюсь. Уф.
Прям хоть иди и пиши в тут темку. 
Раньше я размещал скриншоты под спойлером просто в тегах img. На разных торент трекерах, владельцы, любят иметь каждых свой вид названий тем. Я выбрал с квадратными скобками. Далее, что бы особо не мудрить с именами папок и фотохостингами. Просто закидывал папки с фотками, с именами тем на форуме, себе на сайт (естественно с квадратными скобками). И все работало хорошо.
Потом я решил создать новую раздачу с фотками. Для этого под спойлером нужно было уже размещать не криншоты, а кликабельное превью. Для этого использовал код:
Code:
[url=ссылка_[на]_фото][img]ссылка_[на]_превью[/img][/url]
Code:
ссылка_[на
PHP:
// [url]
$url_exp = '[\w\#!$%&~/.\-;:=,?@а-яА-Я()\[\]+]+?';
$text = preg_replace_callback("#\[url\]((?:https?://)?$url_exp)\[/url\]#isu", [&$this, 'url_callback'], $text);
$text = preg_replace_callback("#\[url\](www\.$url_exp)\[/url\]#isu", [&$this, 'url_callback'], $text);
$text = preg_replace_callback("#\[url=((?:https?://)?$url_exp)\]([^?\n\t].*?)\[/url\]#isu", [&$this, 'url_callback'], $text);
$text = preg_replace_callback("#\[url=(www\.$url_exp)\]([^?\n\t].*?)\[/url\]#isu", [&$this, 'url_callback'], $text);
- Раньше мне успешно удавалось писать [ ] в именах папок. Потому, что закрывающий тег [/img] ищется как одно целое вместе со скобкой.
- А в случае с url дело обстоит хитрее. Если закрывающую скобку писать после знака равно. То в регулярном выражении, просто будет найдено первое совпадение. Да! И это будет скобка из имени папки, а не тэга правее.
Лечится так (сам придумал):
После последней строки вставить изменненые две последние строки, добавив двойные кавычки с экранированием.
PHP:
$text = preg_replace_callback("#\[url=[B]\"[/B]((?:https?://)?$url_exp)[B]\"[/B]\]([^?\n\t].*?)\[/url\]#isu", [&$this, 'url_callback'], $text);[/URL][/URL]
[URL='http://((?:https?://)?$url_exp)[B'][URL='http://((?:https?://)?$url_exp)[B'] $text = preg_replace_callback("#\[url=[B]\"[/B](www\.$url_exp)\[B]"\[/B]]([^?\n\t].*?)\[/url\]#isu", [&$this, 'url_callback'], $text);
И добавлять двойные кавычки, обязательно в тех ссылках, где есть квадратная закрывающаяся кавычка. Другие ссылки можно писать без кавычек, по прежнему.
А еще я на форуме заметил тему про оптимизацию. И вот это счасливое лицо =>
Кажется, как раз в ней разбирается и занимается. Я прям аж пожалел, что при регистрации не указал ник своей учетной записи как: "Оптимизатор". Ведь оптимизация из меня аж прет! Наверняка можно было бы написать, что то в виде этого, в одну строку:
PHP:
$text = preg_replace_callback("#[B]([/B]\[url=((?:https?://)?$url_exp)\][B]|[/B]\[url=[B]\"[/B]((?:https?://)?$url_exp)[B]\"[/B]\][B])[/B]([^?\n\t].*?)\[/url\]#isu", [&$this, 'url_callback'], $text);
Last edited: