Забыли пароль?
Запросите новый здесь.

Автор темы: Vveb--ws
ID темы: 3156
Информация:
Тема содержит 1 сообщения, была просмотрена 1223 раз.
Просмотр темы
PHP-Fusion Russia » Поддержка 7 версии » Плагины
идея классная?
классная! классная! 0%[0 Голосов]
фигня... фигня... 0%[0 Голосов]
мне пофиг :( мне пофиг :( 0%[0 Голосов]
Всего голосов : 0
 Распечатать тему
Сделать FUNCcodes аналог BBcodes и шорткодов Wordpress
Vveb--ws
Привествую!

может чтото готовое уже есть?

мне нужны простые коды для вывода содержимого пользовательских текстах (постах форума, пользовательских страницах).

хочу сделать функции аналогично BBcodes и шорткодам в Wordpress, но лучше и проще.

1) вначале выбираю из текста все блоки от "[" до "]". допустим выбрал - [attach=spisok.zip]

2) тип_метки определяется от "[" до "=". то есть для "[attach=" тип_метки будет "attach".

3) название функции определяется по метке и может иметь приставку (чтобы не совпадали названия функций). например для FUNCcode [attach=spisok.zip] название функции будет допустим funccode__attach().

4) Для FUNCcode без указания функции [priroda.jpg] или [spisok.zip] определять картинку и папку ("IMAGES" или "DOWNLOADS") по расширению файла (картинки это если - .jpeg, .jpg, .png, .gif).

Скачать исходники  Код
$text_part =  "<p>[attach=spisok.zip]</p>";
$func_code = "[attach=spisok.zip]";
$func_name = "attach";
$param = "spisok.zip";
if (function_exists("funccode__".$func_name)) {
   $text_part = str_replace($func_code, call_user_func("funccode__".$func_name, $param), $text_part);
}




4) заменяю в тексте блоки от "[" до "]" для которых есть функции.

это всё должно работать и в редакторе BBcodes и в TinyMCE.

* * *

Скачать исходники  Код
// ФУНКЦИЯ РЕЖЕТ ТЕКСТ НА КУСКИ ПО МЕТКАМ ДО И ПОСЛЕ НУЖНЫХ ТЭГОВ
function multi_explode(
   $text="",
   $exps_before = array("["), // по каким меткам эксплодить ДО
   $exps_after = array("]"), // по каким меткам эксплодить ПОСЛЕ
   $exp = "--==+||+==--" // метка по которой эксплодить
) {

   $text_arr0 = array();
$br="
";

   foreach ($exps_before as $k=>$v) { // по каким меткам эксплодить ДО
      $text = str_replace($v, $exp.$v, $text);
   }

   foreach ($exps_after as $k=>$v) { // по каким меткам эксплодить ПОСЛЕ
      $text = str_replace($v, $v.$exp, $text);
   }

   $text = str_replace("   ", " ", $text); // tab == space
   $text = str_replace("    ", " ", $text); // 4space == space
   $text = str_replace("   ", " ", $text); // 3space == space
   $text = str_replace("  ", " ", $text); // 2space == space

   $text = str_replace($br.$br.$br.$br, $br, $text); // множественные переносы строки
   $text = str_replace($br.$br.$br, $br, $text);
   $text = str_replace($br.$br, $br, $text);

   $text = str_replace($exp." ".$br.$exp, $exp, $text);
   $text = str_replace($exp.$br." ".$exp, $exp, $text);
   $text = str_replace($exp.$br.$exp, $exp, $text); // удаляем пустой перенос строки
   $text = str_replace($exp." ".$exp, $exp, $text); // удаляем пробел

   $text = str_replace($exp.$exp.$exp, $exp, $text); // множественные $exp
   $text = str_replace($exp.$exp, $exp, $text);

   $text_arr0 = explode($exp, $text);

   $text_arr = array();
   // УДАЛЯЮ ПУСТЫЕ значения, перенос строки
   foreach ($text_arr0 as $k=>$v) {
      if ($v<>"" and $v<>" " and $v<>"
")
      $text_arr[] = $v;
   }

   return $text_arr;
}



Изменил(а) Vveb--ws, 22.01.2022 01:10

PHP-Fusion 7 Bogatyr - бесплатная мультиязычная CMS для блога, форума, фотогалереи

vk.com/phpfusion
Создаю интернет-магазины и блоги, лендинги, форумы. Telegram: t.me/Vova_Kazakov
 
Web

Поделиться этой темой
Социальные закладки: Vkontakte Odnoklassniki Mail.ru Facebook Google Tweet This
URL:
BBcode:
HTML:

Перейти на форум: